MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / _createShader

Method _createShader

Engine/source/materials/shaderData.cpp:218–293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

216}
217
218GFXShader* ShaderData::_createShader( const Vector<GFXShaderMacro> &macros )
219{
220 F32 pixver = mPixVersion;
221 if ( mUseDevicePixVersion )
222 pixver = getMax( pixver, GFX->getPixelShaderVersion() );
223
224 // Enable shader error logging.
225 GFXShader::setLogging( true, true );
226
227 GFXShader *shader = GFX->createShader();
228 bool success = false;
229
230 Vector<String> samplers;
231 samplers.setSize(ShaderData::NumTextures);
232 for(int i = 0; i < ShaderData::NumTextures; ++i)
233 samplers[i] = mSamplerNames[i][0] == '$' ? mSamplerNames[i] : "$"+mSamplerNames[i];
234
235 // Initialize the right shader type.
236 switch( GFX->getAdapterType() )
237 {
238 case Direct3D11:
239 {
240 success = shader->init( mDXVertexShaderName,
241 mDXPixelShaderName,
242 pixver,
243 macros,
244 samplers);
245 break;
246 }
247
248 case OpenGL:
249 {
250 success = shader->init( mOGLVertexShaderName,
251 mOGLPixelShaderName,
252 pixver,
253 macros,
254 samplers);
255 break;
256 }
257
258 default:
259 // Other device types are assumed to not support shaders.
260 success = false;
261 break;
262 }
263
264#if defined(TORQUE_DEBUG)
265 //Assert Sampler registers
266 const Vector<GFXShaderConstDesc>& descs = shader->getShaderConstDesc();
267 for(int i = 0; i < descs.size(); ++i)
268 {
269 if(descs[i].constType != GFXSCT_Sampler && descs[i].constType != GFXSCT_SamplerCube)
270 continue;
271
272 GFXShaderConstHandle *handle = shader->findShaderConstHandle(descs[i].name);
273 if(!handle || !handle->isValid())
274 continue;
275

Callers

nothing calls this directly

Calls 15

getMaxFunction · 0.85
avarFunction · 0.85
printfFunction · 0.85
getNameFunction · 0.50
getPixelShaderVersionMethod · 0.45
createShaderMethod · 0.45
setSizeMethod · 0.45
getAdapterTypeMethod · 0.45
initMethod · 0.45
sizeMethod · 0.45
findShaderConstHandleMethod · 0.45
isValidMethod · 0.45

Tested by

no test coverage detected