r3dObj.cpp
Code:
void MeshDeferredHighlightRenderable::DoDraw( Renderable* RThis, float distance, const r3dCamera& Cam )
{
D3DPERF_BeginEvent( 0, L"MeshDeferredHighlightRenderable::Draw" );
MeshDeferredHighlightRenderable * This = static_cast<MeshDeferredHighlightRenderable*>( RThis );
r3dMesh* Mesh = This->Mesh;
r3dColor color( r3dColor::white );
r3dRenderer->SetVertexShader( VS_FILLGBUFFER_EXTRUDE_ID );
float factor = r_highlight_thickness->GetFloat();
const float LINE_SATURATE = 2.0f;
if( distance < LINE_SATURATE )
factor *= distance / LINE_SATURATE;
float vsConst[ 4 ] = { factor / Mesh->unpackScale.x, factor / Mesh->unpackScale.y, factor / Mesh->unpackScale.z, 0 };
// float4x3 vExtrudeMatrix : register( c17 );
D3D_V( r3dRenderer->pd3ddev->SetVertexShaderConstantF( 17, vsConst, 1 ) );
r3dPoint3D normal( 0, 1, 0 );
normal.Normalize();
SetFillGBufferConstantPixelShader( r3dColor::blue, 1.0f, normal, 0.0f, 0.0f, r_highlight_glow->GetFloat(), 0.f );
Mesh->DrawMeshSimple( 0 );
D3DPERF_EndEvent();
}