playcanvas
Version:
PlayCanvas WebGL game engine
99 lines (80 loc) • 2.58 kB
JavaScript
var composePS = /* glsl */ `
varying vec2 uv0;
uniform sampler2D sceneTexture;
uniform vec2 sceneTextureInvRes;
void main() {
vec2 uv = uv0;
// TAA pass renders upside-down on WebGPU, flip it here
uv.y = 1.0 - uv.y;
vec4 scene = texture2DLod(sceneTexture, uv, 0.0);
vec3 result = scene.rgb;
// Apply CAS
result = applyCas(result, uv, sharpness);
// Apply DOF
result = applyDof(result, uv0);
// Apply SSAO
result = applySsao(result, uv0);
// Apply Fringing
result = applyFringing(result, uv);
// Apply Bloom
result = applyBloom(result, uv0);
// Apply Color Grading
result = applyGrading(result);
// Apply Tone Mapping
result = toneMap(result);
// Apply Color LUT after tone mapping, in LDR space
result = applyColorLUT(result);
// Apply Vignette
result = applyVignette(result, uv);
// Debug output handling in one centralized location
result = scene.rgb;
result = dBloom * bloomIntensity;
result = vec3(dCoc, 0.0);
result = dBlur;
result = vec3(dSsao);
result = vec3(dVignette);
// Apply gamma correction
result = gammaCorrectOutput(result);
gl_FragColor = vec4(result, scene.a);
}
`;
export { composePS as default };