playcanvas
Version:
PlayCanvas WebGL game engine
4 lines (2 loc) • 1.62 kB
JavaScript
var transformVS = "\n#ifdef PIXELSNAP\nuniform vec4 uScreenSize;\n#endif\n#ifdef SCREENSPACE\nuniform float projectionFlipY;\n#endif\nvec4 evalWorldPosition(vec3 vertexPosition, mat4 modelMatrix) {\n vec3 localPos = getLocalPosition(vertexPosition);\n #ifdef NINESLICED\n localPos.xz *= outerScale;\n vec2 positiveUnitOffset = clamp(vertexPosition.xz, vec2(0.0), vec2(1.0));\n vec2 negativeUnitOffset = clamp(-vertexPosition.xz, vec2(0.0), vec2(1.0));\n localPos.xz += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n vTiledUv = (localPos.xz - outerScale + innerOffset.xy) * -0.5 + 1.0;\n localPos.xz *= -0.5;\n localPos = localPos.xzy;\n #endif\n vec4 posW = modelMatrix * vec4(localPos, 1.0);\n #ifdef SCREENSPACE\n posW.zw = vec2(0.0, 1.0);\n #endif\n return posW;\n}\nvec4 getPosition() {\n dModelMatrix = getModelMatrix();\n vec4 posW = evalWorldPosition(vertex_position.xyz, dModelMatrix);\n dPositionW = posW.xyz;\n vec4 screenPos;\n #ifdef UV1LAYOUT\n screenPos = vec4(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1);\n #ifdef WEBGPU\n screenPos.y *= -1.0;\n #endif\n #else\n #ifdef SCREENSPACE\n screenPos = posW;\n screenPos.y *= projectionFlipY;\n #else\n screenPos = matrix_viewProjection * posW;\n #endif\n #ifdef PIXELSNAP\n screenPos.xy = (screenPos.xy * 0.5) + 0.5;\n screenPos.xy *= uScreenSize.xy;\n screenPos.xy = floor(screenPos.xy);\n screenPos.xy *= uScreenSize.zw;\n screenPos.xy = (screenPos.xy * 2.0) - 1.0;\n #endif\n #endif\n return screenPos;\n}\nvec3 getWorldPosition() {\n return dPositionW;\n}\n";
export { transformVS as default };