bool ProcessedFFMaterial::setupPass( SceneState *state, const SceneGraphData &sgData, U32 pass ) { PROFILE_SCOPE( ProcessedFFMaterial_SetupPass ); // Make sure we have a pass if(pass >= mPasses.size()) return false; _setRenderState( state, sgData, pass ); // Bind our textures setTextureStages( state, sgData, pass ); return true; }
// // Runtime / rendering // bool ProcessedShaderMaterial::setupPass( SceneRenderState *state, const SceneData &sgData, U32 pass ) { PROFILE_SCOPE( ProcessedShaderMaterial_SetupPass ); // Make sure we have the pass if(pass >= mPasses.size()) { // If we were rendering instanced data tell // the device to reset that vb stream. if ( mInstancingState ) GFX->setVertexBuffer( NULL, 1 ); return false; } _setRenderState( state, sgData, pass ); // Set shaders ShaderRenderPassData* rpd = _getRPD(pass); if( rpd->shader ) { GFX->setShader( rpd->shader ); GFX->setShaderConstBuffer(_getShaderConstBuffer(pass)); _setShaderConstants(state, sgData, pass); // If we're instancing then do the initial step to get // set the vb pointer to the const buffer. if ( mInstancingState ) stepInstance(); } else { GFX->disableShaders(); GFX->setShaderConstBuffer(NULL); } // Set our textures setTextureStages( state, sgData, pass ); _setTextureTransforms(pass); return true; }
void Surface::setRenderState(const DWORD in_stateType, const DWORD in_state) { AssertFatal(pD3DDevice2Vector[deviceMinorId] != NULL, "No device to set renderstate to..."); switch (in_stateType) { case D3DRENDERSTATE_TEXTUREHANDLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.textureHandle); break; case D3DRENDERSTATE_TEXTUREADDRESS: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.textureAddress); break; case D3DRENDERSTATE_TEXTUREPERSPECTIVE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.texturePerspective); break; case D3DRENDERSTATE_WRAPU: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.wrapU); break; case D3DRENDERSTATE_WRAPV: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.wrapV); break; case D3DRENDERSTATE_ZENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.zEnable); break; case D3DRENDERSTATE_FILLMODE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.fillMode); break; case D3DRENDERSTATE_SHADEMODE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.shadeMode); break; case D3DRENDERSTATE_ZWRITEENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.zWriteEnable); break; case D3DRENDERSTATE_ALPHATESTENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.alphaTestEnable); break; case D3DRENDERSTATE_SRCBLEND: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.srcBlend); break; case D3DRENDERSTATE_DESTBLEND: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.destBlend); break; case D3DRENDERSTATE_TEXTUREMAPBLEND: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.textureMapBlend); break; case D3DRENDERSTATE_CULLMODE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.cullMode); break; case D3DRENDERSTATE_ZFUNC: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.zFunc); break; case D3DRENDERSTATE_ALPHAREF: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.alphaRef); break; case D3DRENDERSTATE_ALPHAFUNC: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.alphaFunc); break; case D3DRENDERSTATE_FOGENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.fogEnable); break; case D3DRENDERSTATE_ZVISIBLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.zVisible); break; case D3DRENDERSTATE_FOGCOLOR: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.fogColor); break; case D3DRENDERSTATE_COLORKEYENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.colorKeyEnable); break; case D3DRENDERSTATE_TEXTUREMAG: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.textureMag); break; case D3DRENDERSTATE_TEXTUREMIN: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.textureMin); break; // Special NOTE: 3DFx does not support specifically setting the blend // enable for just the alpha blending at this time. Use the big gun... // case D3DRENDERSTATE_BLENDENABLE: _setRenderState(in_stateType, in_state, (DWORD*)&renderState.blendEnable); break; case D3DRENDERSTATE_ALPHABLENDENABLE: _setRenderState(D3DRENDERSTATE_BLENDENABLE, in_state, (DWORD*)&renderState.alphaBlendEnable); break; default: AssertWarn(0, "Unknown render state set..."); break; } }