shaders/deferredShading/deferredShadingAtmos.tstypescript
import { ShaderProgram } from "../../webgl/ShaderProgram";
import { stringTemplate2 } from "../../utils/shared";
import { cascadeShadowUniforms, shadowMapUniforms } from "../common/uniforms";
import type { AtmosphereParameters } from "../atmos/atmos";
import { DEFAULT_PARAMS } from "../atmos/atmos";
import deferred_vert from "./deferredShading.vert.glsl";
import deferred_atmos_frag from "./deferredShadingAtmos.frag.glsl";
export function deferredShadingAtmos(atmosParams: AtmosphereParameters = DEFAULT_PARAMS): ShaderProgram {
return new ShaderProgram("deferredShadingAtmos", {
uniforms: {
normalMatrix: "mat3",
baseTexture: "sampler2d",
materialsTexture: "sampler2d",
normalTexture: "sampler2d",
viewPositionTexture: "sampler2d",
transmittanceTexture: "sampler2D",
scatteringTexture: "sampler2D",
lightPosition: "vec3",
lightAmbient: "vec3",
lightDiffuse: "vec3",
lightSpecular: "vec4",
cameraPosition: "vec3",
cameraForward: "vec3",
isOrthographic: "float",
atmosFadeDist: "vec2",
atmosMaxMinOpacity: "vec3",
frameOpacity: "float",
...shadowMapUniforms,
...cascadeShadowUniforms
},
attributes: {
corners: "vec3"
},
vertexShader: deferred_vert,
fragmentShader: stringTemplate2(deferred_atmos_frag, {
...atmosParams
})
});
}