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

Method render

Engine/source/environment/VolumetricFog.cpp:1065–1180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1063}
1064
1065void VolumetricFog::render(ObjectRenderInst *ri, SceneRenderState *state, BaseMatInstance *overrideMat)
1066{
1067 if (overrideMat || !mShapeLoaded || !isClientObject() || mResizing)
1068 return;
1069
1070 PROFILE_SCOPE(VolumetricFog_Render);
1071
1072 GFXTransformSaver saver;
1073 GFX->setVertexBuffer(mVB);
1074 GFX->setPrimitiveBuffer(mPB);
1075
1076 MatrixF mat = getRenderTransform();
1077 mat.scale(mObjScale);
1078 GFX->multWorld(mat);
1079
1080 GFX->setShader(mDeferredShader);
1081 GFX->setShaderConstBuffer(mPPShaderConsts);
1082 GFX->setStateBlock(mStateblock_preD);
1083
1084 // Set all the shader consts...
1085
1086 MatrixF xform(GFX->getProjectionMatrix());
1087 xform *= GFX->getViewMatrix();
1088 xform *= GFX->getWorldMatrix();
1089
1090 mPPShaderConsts->setSafe(mPPModelViewProjSC, xform);
1091
1092 const LinearColorF &sunlight = state->getAmbientLightColor();
1093
1094 Point3F ambientColor(sunlight.red, sunlight.green, sunlight.blue);
1095 mShaderConsts->setSafe(mAmbientColorSC, ambientColor);
1096
1097 GFXTextureObject *mDepthBuffer = mDepthBufferTarget ? mDepthBufferTarget->getTexture(0) : NULL;
1098 GFXTextureObject *mFrontBuffer = mFrontBufferTarget ? mFrontBufferTarget->getTexture(0) : NULL;
1099
1100 GFX->pushActiveRenderTarget();
1101
1102 //render backside to target mDepthBuffer
1103 z_buf->attachTexture(GFXTextureTarget::DepthStencil, GFXTextureTarget::sDefaultDepthStencil);
1104 z_buf->attachTexture(GFXTextureTarget::Color0, mDepthBuffer);
1105
1106 GFX->setActiveRenderTarget(z_buf);
1107 GFX->clear(GFXClearStencil | GFXClearTarget , ColorI(0,0,0,0), 1.0f, 0);
1108
1109 GFX->drawPrimitive(0);
1110 z_buf->resolve();
1111
1112 //render frontside to target mFrontBuffer
1113 z_buf->attachTexture(GFXTextureTarget::DepthStencil, GFXTextureTarget::sDefaultDepthStencil);
1114 z_buf->attachTexture(GFXTextureTarget::Color0, mFrontBuffer);
1115 GFX->clear(GFXClearStencil | GFXClearTarget, ColorI(0, 0, 0, 0), 1.0f, 0);
1116
1117 GFX->setStateBlock(mStateblock_preF);
1118
1119 GFX->drawPrimitive(0);
1120 z_buf->resolve();
1121
1122 GFX->popActiveRenderTarget();

Callers 1

renderSceneMethod · 0.45

Calls 15

mClampFFunction · 0.85
setVertexBufferMethod · 0.80
setPrimitiveBufferMethod · 0.80
multWorldMethod · 0.80
setShaderConstBufferMethod · 0.80
getProjectionMatrixMethod · 0.80
setActiveRenderTargetMethod · 0.80
popActiveRenderTargetMethod · 0.80
ColorIClass · 0.50
getCurrentTimeFunction · 0.50

Tested by

no test coverage detected