float4x4 c3d_mtxProjection; float4x4 c3d_mtxModel; float4x4 c3d_mtxView; struct VtxInput { float4 Position : POSITION0; float3 Normal : NORMAL0; }; struct VtxOuput { float4 Position : POSITION0; float3 Normal : NORMAL0; }; VtxOuput mainVx( in VtxInput p_input) { VtxOuput l_output; l_output.Position = mul( p_input.Position, c3d_mtxProjection * (c3d_mtxView * c3d_mtxModel) ); if( p_input.Normal.x < 0 || p_input.Normal.y < 0 || p_input.Normal.z < 0 ) { l_output.Normal = float3( abs( p_input.Normal.x ), abs( p_input.Normal.y ), abs( p_input.Normal.z ) ); } else { l_output.Normal = p_input.Normal; } return l_output; } float4 mainPx( in VtxOuput p_input ) : COLOR0 { return float4( p_input.Normal, 1.0 ); }