// Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #pragma anki technique ForwardLegacy vert pixel #include #include #pragma anki struct AnKiLocalConstants #pragma anki member Vec3 m_fogColor #pragma anki member F32 m_fogAlphaScale #pragma anki member F32 m_fogDistanceOfMaxThikness #pragma anki struct_end struct VertIn { U32 m_svVertexId : SV_VERTEXID; }; struct VertOut { Vec4 m_svPosition : SV_POSITION; F32 m_zVSpace : ZVSPACE; nointerpolation U32 m_constantsOffset : CONSTANTS_OFFSET; }; #if ANKI_VERTEX_SHADER VertOut main(VertIn input) { VertOut output; const GpuScenePerDraw perDraw = getGpuScenePerDraw(); const GpuSceneMeshLod mesh = g_meshLods[perDraw.m_meshLodIndex]; const Mat3x4 worldTransform = g_transforms[perDraw.m_worldTransformsIndex]; const UnpackedMeshVertex vertex = loadVertex(mesh, input.m_svVertexId, false); const Vec3 worldPos = mul(worldTransform, Vec4(vertex.m_position, 1.0)); output.m_svPosition = mul(g_globalConstants.m_viewProjectionMatrix, Vec4(worldPos, 1.0)); const Vec3 viewPos = mul(g_globalConstants.m_viewTransform, Vec4(worldPos, 1.0)); output.m_zVSpace = viewPos.z; output.m_constantsOffset = perDraw.m_constantsOffset; return output; } #endif // ANKI_VERTEX_SHADER #if ANKI_PIXEL_SHADER PixelOut main(VertOut input) { PixelOut output = (PixelOut)0; const AnKiLocalConstants localConstants = loadAnKiLocalConstants(g_gpuScene, input.m_constantsOffset); fog(localConstants.m_fogColor, localConstants.m_fogAlphaScale, localConstants.m_fogDistanceOfMaxThikness, input.m_svPosition, input.m_zVSpace, output); return output; } #endif // ANKI_PIXEL_SHADER