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

Method _createShader

Engine/source/materials/shaderData.cpp:217–294  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

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