MCPcopy Create free account
hub / github.com/DiligentGraphics/DiligentFX / GetPSO

Method GetPSO

Components/src/VectorFieldRenderer.cpp:88–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86)";
87
88IPipelineState* VectorFieldRenderer::GetPSO(const PSOKey& Key)
89{
90 auto it = m_PSOs.find(Key);
91 if (it != m_PSOs.end())
92 return it->second;
93
94 RenderDeviceWithCache_N Device{m_pDevice, m_pStateCache};
95
96 RefCntAutoPtr<IShaderSourceInputStreamFactory> pMemorySourceFactory =
97 CreateMemoryShaderSourceFactory({MemoryShaderSourceFileInfo{"PSMainGenerated.generated", !m_PSMainSource.empty() ? m_PSMainSource.c_str() : DefaultPSMain}});
98 RefCntAutoPtr<IShaderSourceInputStreamFactory> pShaderSourceFactory =
99 CreateCompoundShaderSourceFactory({&DiligentFXShaderSourceStreamFactory::GetInstance(), pMemorySourceFactory});
100
101 ShaderCreateInfo ShaderCI;
102 ShaderCI.SourceLanguage = SHADER_SOURCE_LANGUAGE_HLSL;
103 ShaderCI.pShaderSourceStreamFactory = pShaderSourceFactory;
104 if (m_PackMatrixRowMajor)
105 ShaderCI.CompileFlags |= SHADER_COMPILE_FLAG_PACK_MATRIX_ROW_MAJOR;
106 if (m_AsyncShaders)
107 ShaderCI.CompileFlags |= SHADER_COMPILE_FLAG_ASYNCHRONOUS;
108
109 ShaderMacroHelper Macros;
110 Macros.Add("CONVERT_OUTPUT_TO_SRGB", Key.ConvertOutputToSRGB);
111 ShaderCI.Macros = Macros;
112
113 RefCntAutoPtr<IShader> pVS;
114 {
115 ShaderCI.Desc = {"Vector Field VS", SHADER_TYPE_VERTEX, true};
116 ShaderCI.EntryPoint = "main";
117 ShaderCI.FilePath = "VectorField.vsh";
118
119 pVS = Device.CreateShader(ShaderCI);
120 if (!pVS)
121 {
122 UNEXPECTED("Failed to create vector field vertex shader");
123 return nullptr;
124 }
125 }
126
127 // Create pixel shader
128 RefCntAutoPtr<IShader> pPS;
129 {
130 ShaderCI.Desc = {"Vector Field PS", SHADER_TYPE_PIXEL, true};
131 ShaderCI.EntryPoint = "main";
132 ShaderCI.FilePath = "PSMainGenerated.generated";
133
134 pPS = Device.CreateShader(ShaderCI);
135 if (!pPS)
136 {
137 UNEXPECTED("Failed to create vector field pixel shader");
138 return nullptr;
139 }
140 }
141
142 PipelineResourceLayoutDescX ResourceLauout;
143 ResourceLauout
144 .SetDefaultVariableType(SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)
145 .AddVariable(SHADER_TYPE_VERTEX, "g_tex2DVectorField", SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC)

Callers

nothing calls this directly

Calls 1

CreateShaderMethod · 0.80

Tested by

no test coverage detected