MCPcopy Create free account
hub / github.com/carbonengine/trinity / PopulatePerFrameVSData

Method PopulatePerFrameVSData

trinity/Eve/EveSpaceScene.cpp:3011–3064  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3009
3010
3011void EveSpaceScene::PopulatePerFrameVSData( PerFrameVSData& data, Tr2RenderContext& renderContext )
3012{
3013 // column_major for shaders
3014 data.ViewMat = Transpose( Tr2Renderer::GetViewTransform() );
3015 Matrix proj = Tr2Renderer::GetReversedDepthProjectionTransform();
3016 data.ProjectionMat = Transpose( proj );
3017 Matrix viewProject( Tr2Renderer::GetViewTransform() * proj );
3018 data.ViewProjectionMat = Transpose( viewProject );
3019 // attention: need the transposed, but shader also needs column_major, so it is transpose(transpose(m)) == m
3020 data.ViewInverseTransposeMat = Tr2Renderer::GetInverseViewTransform();
3021
3022 Matrix lastProjection = m_projectionLast * m_jitterMatrix;
3023 data.ViewProjectionLast = Transpose( m_viewLast * lastProjection );
3024 data.ViewLast = Transpose( m_viewLast );
3025 data.ProjLast = Transpose( lastProjection );
3026
3027 // each scene has a nebula and that can be rotated and inverted (via scaling)
3028 data.EnvMapRotationMat = Transpose( RotationMatrix( m_envMapRotation ) );
3029
3030 // sun data
3031 data.Sun = m_sunData;
3032 data.Sun.DiffuseColor = m_currentSunColor;
3033
3034 // make sure whatever direction we get in here, it is normalized! And inverted: Shaders work with direction to light...
3035 data.Sun.DirWorld = -Normalize( data.Sun.DirWorld );
3036
3037 // resolution of rendertarget
3038 data.TargetResolution.x = (float)renderContext.m_esm.GetRenderTargetWidth();
3039 data.TargetResolution.y = (float)renderContext.m_esm.GetRenderTargetHeight();
3040
3041 // fov in both ways: width (x) and (height (y)
3042 data.FovXY.y = EveCamera::CalculateFovFromProjection( Tr2Renderer::GetProjectionTransform() );
3043 data.FovXY.x = data.FovXY.y * Tr2Renderer::GetAspectRatio();
3044
3045 float distance = m_fogEnd - m_fogStart;
3046 if( fabsf( distance ) < 1e-5f )
3047 {
3048 distance = 1e-5f;
3049 }
3050 data.FogFactors = Vector3( m_fogEnd / distance, 1.f / distance, m_fogMax );
3051
3052 // Derived from SetupViewport in Tr2Renderer.cpp
3053 const Tr2Viewport& deviceViewport = renderContext.m_esm.GetDeviceViewport();
3054 const TriViewport& viewport = renderContext.m_esm.GetViewport();
3055 data.ViewportAdjustment.x = viewport.x < 0 ? -1.0f : 1.0f;
3056 data.ViewportAdjustment.y = viewport.y + viewport.height > (int)renderContext.m_esm.GetRenderTargetHeight() ? -1.0f : 1.0f;
3057 data.ViewportAdjustment.z = deviceViewport.m_width / viewport.width;
3058 data.ViewportAdjustment.w = deviceViewport.m_height / viewport.height;
3059 data.Time = Tr2Renderer::GetAnimationTime();
3060 data.Upscaling = m_upscalingAmount;
3061
3062 data.ViewportSize.x = renderContext.m_esm.GetDeviceViewport().m_width;
3063 data.ViewportSize.y = renderContext.m_esm.GetDeviceViewport().m_height;
3064}
3065
3066void EveSpaceScene::PopulatePerFramePSData( PerFramePSData& data, Tr2RenderContext& renderContext )
3067{

Callers

nothing calls this directly

Calls 8

TransposeFunction · 0.85
GetViewTransformFunction · 0.85
GetProjectionTransformFunction · 0.85
GetAspectRatioFunction · 0.85
GetRenderTargetWidthMethod · 0.80
GetRenderTargetHeightMethod · 0.80
Vector3Class · 0.50
GetViewportMethod · 0.45

Tested by

no test coverage detected