MCPcopy Create free account
hub / github.com/carbonengine/trinity / Read

Method Read

trinity/Shader/Tr2EffectDescription.cpp:476–823  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

474}
475
476bool Tr2EffectDescription::Read( const void* data,
477 size_t dataSize,
478 unsigned version,
479 const char* stringTable,
480 size_t stringTableSize,
481 const char* effectName )
482{
483 USE_MAIN_THREAD_RENDER_CONTEXT();
484
485 techniques.clear();
486 annotations.clear();
487
488 try
489 {
490
491 EffectStream stream( data, dataSize, stringTable, stringTableSize );
492
493 uint8_t techniqueCount = 1;
494 if( version > 6 )
495 {
496 techniqueCount = stream.Read<uint8_t>();
497 }
498 techniques.resize( techniqueCount );
499
500 for( uint8_t technique = 0; technique < techniqueCount; ++technique )
501 {
502 if( version > 6 )
503 {
504 techniques[technique].name = BlueSharedString( stream.ReadString() );
505 }
506 else
507 {
508 techniques[technique].name = DEFAULT_TECHNIQUE;
509 }
510 techniques[technique].shaderTypeMask = 0;
511
512 uint8_t passCount = SanityCheck( stream.Read<uint8_t>(), 64 );
513 techniques[technique].passes.resize( passCount );
514 for( int passIx = 0; passIx < passCount; ++passIx )
515 {
516 Tr2Pass& pass = techniques[technique].passes[passIx];
517 pass.shaderTypeMask = 0;
518
519 std::vector<Tr2RenderContextEnum::ShaderType> shaderTypes;
520 std::vector<Tr2ShaderSignatureAL> signatures;
521
522 for( unsigned stageIx = 0; stageIx != Tr2RenderContextEnum::SHADER_TYPE_COUNT; ++stageIx )
523 {
524 pass.stageInputs[stageIx].m_exists = false;
525 pass.stageInputs[stageIx].m_shader = Tr2EffectStageInput::INVALID;
526 pass.stageInputs[stageIx].m_constantValueSize = 0;
527 }
528
529 uint8_t stageCount = SanityCheck( stream.Read<uint8_t>(), Tr2RenderContextEnum::SHADER_TYPE_COUNT );
530 uint32_t shaderHandles[Tr2RenderContextEnum::SHADER_TYPE_COUNT];
531
532 for( int stageIx = 0; stageIx < stageCount; ++stageIx )
533 {

Callers 9

FileReadFunction · 0.45
ParseIesMethod · 0.45
BakeLightProfileMethod · 0.45
GetThumbnailMethod · 0.45
GetShaderMethod · 0.45
ReadResourceFunction · 0.45
ReadSamplerFunction · 0.45
ReadRegistersFunction · 0.45
ReadInputFunction · 0.45

Calls 15

SanityCheckFunction · 0.85
ShaderTypeEnum · 0.85
ReadPipelineInputsFunction · 0.85
ReadRegistersFunction · 0.85
ReadInputFunction · 0.85
Tr2ShaderBytecodeALClass · 0.85
FindSamplerByNameFunction · 0.85
RenderStateEnum · 0.85
ReadAnnotationsFunction · 0.85
ReadStringMethod · 0.80

Tested by

no test coverage detected