dawn-cmake/test/tint/benchmark/shadow-fragment.wgsl
Ryan Harrison dbc13af287 tint->dawn: Shuffle source tree in preperation of merging repos
docs/    -> docs/tint/
fuzzers/ -> src/tint/fuzzers/
samples/ -> src/tint/cmd/
src/     -> src/tint/
test/    -> test/tint/

BUG=tint:1418,tint:1433

Change-Id: Id2aa79f989aef3245b80ef4aa37a27ff16cd700b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/80482
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2022-02-21 15:19:07 +00:00

43 lines
1.4 KiB
WebGPU Shading Language

let shadowDepthTextureSize : f32 = 1024.0;
struct Scene {
lightViewProjMatrix : mat4x4<f32>;
cameraViewProjMatrix : mat4x4<f32>;
lightPos : vec3<f32>;
}
@group(0) @binding(0) var<uniform> scene : Scene;
@group(0) @binding(1) var shadowMap : texture_depth_2d;
@group(0) @binding(2) var shadowSampler : sampler_comparison;
struct FragmentInput {
@location(0)
shadowPos : vec3<f32>;
@location(1)
fragPos : vec3<f32>;
@location(2)
fragNorm : vec3<f32>;
}
let albedo : vec3<f32> = vec3<f32>(0.899999976, 0.899999976, 0.899999976);
let ambientFactor : f32 = 0.200000003;
@stage(fragment)
fn main(input : FragmentInput) -> @location(0) vec4<f32> {
var visibility : f32 = 0.0;
let oneOverShadowDepthTextureSize = (1.0 / shadowDepthTextureSize);
for(var y : i32 = -1; (y <= 1); y = (y + 1)) {
for(var x : i32 = -1; (x <= 1); x = (x + 1)) {
let offset : vec2<f32> = vec2<f32>((f32(x) * oneOverShadowDepthTextureSize), (f32(y) * oneOverShadowDepthTextureSize));
visibility = (visibility + textureSampleCompare(shadowMap, shadowSampler, (input.shadowPos.xy + offset), (input.shadowPos.z - 0.007)));
}
}
visibility = (visibility / 9.0);
let lambertFactor : f32 = max(dot(normalize((scene.lightPos - input.fragPos)), input.fragNorm), 0.0);
let lightingFactor : f32 = min((ambientFactor + (visibility * lambertFactor)), 1.0);
return vec4<f32>((lightingFactor * albedo), 1.0);
}