playcanvas
Version:
PlayCanvas WebGL game engine
69 lines (62 loc) • 1.77 kB
JavaScript
import { SEMANTIC_POSITION } from '../../platform/graphics/constants.js';
const unlitShader = {
uniqueName: 'gizmo-unlit',
attributes: {
vertex_position: SEMANTIC_POSITION
},
vertexGLSL: `
attribute vec3 vertex_position;
uniform mat4 matrix_model;
uniform mat4 matrix_viewProjection;
void main(void) {
gl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0);
gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w));
}
`,
fragmentGLSL: `
precision highp float;
uniform vec4 uColor;
uniform float uDepth;
void main(void) {
if (uColor.a < 1.0 / 255.0) {
discard;
}
gl_FragColor = vec4(gammaCorrectOutput(decodeGamma(uColor)), uColor.a);
gl_FragDepth = uDepth;
}
`,
vertexWGSL: `
attribute vertex_position: vec3f;
uniform matrix_model: mat4x4f;
uniform matrix_viewProjection: mat4x4f;
@vertex
fn vertexMain(input: VertexInput) -> VertexOutput {
var output: VertexOutput;
let pos = vec4f(input.vertex_position, 1.0);
output.position = uniform.matrix_viewProjection * uniform.matrix_model * pos;
output.position.z = clamp(output.position.z, -abs(output.position.w), abs(output.position.w));
return output;
}
`,
fragmentWGSL: `
uniform uColor: vec4f;
uniform uDepth: f32;
@fragment
fn fragmentMain(input: FragmentInput) -> FragmentOutput {
var output: FragmentOutput;
if (uniform.uColor.a < 1.0 / 255.0) {
discard;
}
output.color = vec4f(gammaCorrectOutput(decodeGamma(uniform.uColor)), uniform.uColor.a);
output.fragDepth = uniform.uDepth;
return output;
}
`
};
export { unlitShader };