MCPcopy Create free account
hub / github.com/TheRealMJP/Shadows / UpdateShaders

Function UpdateShaders

Shadows/SampleFramework11/ShaderCompilation.cpp:411–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

409}
410
411void UpdateShaders(ID3D11Device* device)
412{
413 if(ShaderFiles.size() == 0)
414 return;
415
416 static uint64 currFrame = 0;
417 currFrame = (currFrame + 1) % 10;
418 if(currFrame != 0)
419 return;
420
421 static uint64 currFile = 0;
422 currFile = (currFile + 1) % uint64(ShaderFiles.size());
423
424 ShaderFile* file = ShaderFiles[currFile];
425 const uint64 newTimeStamp = GetFileTimestamp(file->FilePath.c_str());
426 if(file->TimeStamp == 0)
427 {
428 file->TimeStamp = newTimeStamp;
429 return;
430 }
431
432 if(file->TimeStamp < newTimeStamp)
433 {
434 file->TimeStamp = newTimeStamp;
435 for(uint64 i = 0; i < file->Shaders.size(); ++i)
436 {
437 CompiledShader* shader = file->Shaders[i];
438 if(*shader->Type == typeid(ID3D11VertexShader))
439 CompileShader<ID3D11VertexShader>(device, shader);
440 else if(*shader->Type == typeid(ID3D11HullShader))
441 CompileShader<ID3D11HullShader>(device, shader);
442 else if(*shader->Type == typeid(ID3D11DomainShader))
443 CompileShader<ID3D11DomainShader>(device, shader);
444 else if(*shader->Type == typeid(ID3D11GeometryShader))
445 CompileShader<ID3D11GeometryShader>(device, shader);
446 else if(*shader->Type == typeid(ID3D11PixelShader))
447 CompileShader<ID3D11PixelShader>(device, shader);
448 else if(*shader->Type == typeid(ID3D11ComputeShader))
449 CompileShader<ID3D11ComputeShader>(device, shader);
450 else
451 AssertFail_("Invalid shader type");
452 }
453 }
454}
455
456void ShutdownShaders()
457{

Callers 1

RunMethod · 0.85

Calls 1

GetFileTimestampFunction · 0.85

Tested by

no test coverage detected