<@include gpu/Config.slh@> <$VERSION_HEADER$> // <$_SCRIBE_FILENAME$> // Generated on <$_SCRIBE_DATE$> // // Created by HifiExperiments on 7/24/2020 // Copyright 2024 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // <@include gpu/Inputs.slh@> <@include gpu/Color.slh@> <@include render-utils/ShaderConstants.h@> <@include gpu/Transform.slh@> <$declareStandardTransform()$> OUTPUT(RENDER_UTILS_ATTR_PREV_POSITION_CS, vec4, _prevPositionCS); OUTPUT(GPU_ATTR_TEXCOORD0, vec2, varTexCoord0); OUTPUT(GPU_ATTR_TEXCOORD1, vec2, varTexCoord1); OUTPUT(GPU_ATTR_COLOR, vec4, varColor); void main(void) { varTexCoord0 = inTexCoord0.st; varColor = color_sRGBAToLinear(inColor); // standard transform TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); <$transformModelToClipPosAndPrevClipPos(cam, obj, inPosition, gl_Position, _prevPositionCS)$> // varTexCoord1 is the UV offset transformed so it's at a constant // position relative to the camera. This allows us to do a distance-fade // effect to hide the square edges of the grid popping in and out. // transform the camera position into model-space vec4 localCamPos = obj._modelInverse * vec4(getEyeWorldPos(), 1.0); varTexCoord1 = varTexCoord0; varTexCoord1.x -= localCamPos.x; varTexCoord1.y -= localCamPos.y; varTexCoord1.x = 2.0 * (varTexCoord1.x - 0.5); varTexCoord1.y = 2.0 * (varTexCoord1.y - 0.5); }