
494 VII 3D Engine Design
float3 gv [3] , v [3];
// Compute grid −space positions from world−space positions ;
// g SceneLBFbox contains the left , bottom, and front points
// of world−space bounding box of the grid
gv [0] = ( input [0].f3WorldSpacePos − g_SceneLBFbox . xyz )/
f3CellSize ;
gv [1] = ( input [1].f3WorldSpacePos − g_SceneLBFbox . xyz )/
f3CellSize ;
gv [2] = ( input [2].f3WorldSpacePos − g_SceneLBFbox . xyz )/
f3CellSize ;
// Compute triangle edges
float3 d0 = gv [1] − gv [0];
float3 d1 = gv [2] − gv [0];
// Compute triangle normal
float3 N = normalize( cross ( d0 , d1 ));
float3 C =( 1.0f /3.0f ) ( gv [0] + gv [1] + gv [2] );
// Move eye posi