mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-01 12:11:34 +00:00
Add additional nodes to capture places where control flow is changed (if, switch, for, short-circuiting op, function call), and use these to show the actual point at which control flow became non-uniform as a result of a non-uniform value. Do this recursively, to capture cases where control flow becomes non-uniform after a function call statement. Bug: tint:880 Change-Id: Ied92d690f98a5c11a1892eef500a50d0f123943d Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/89862 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
38 lines
1.4 KiB
WebGPU Shading Language
38 lines
1.4 KiB
WebGPU Shading Language
bug/fxc/gradient_in_varying_loop/1112.wgsl:23:33 warning: 'textureSample' must only be called from uniform control flow
|
|
let sampleDepth : f32 = textureSample(depthTexture, Sampler, offset.xy).r;
|
|
^^^^^^^^^^^^^
|
|
|
|
bug/fxc/gradient_in_varying_loop/1112.wgsl:18:28 note: control flow depends on non-uniform value
|
|
if (offset.x < 0.0 || offset.y < 0.0 || offset.x > 1.0 || offset.y > 1.0) {
|
|
^^
|
|
|
|
bug/fxc/gradient_in_varying_loop/1112.wgsl:8:29 note: return value of 'textureSample' may be non-uniform
|
|
let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
|
|
^^^^^^^^^^^^^
|
|
|
|
@group(0) @binding(0) var Sampler : sampler;
|
|
|
|
@group(0) @binding(1) var randomTexture : texture_2d<f32>;
|
|
|
|
@group(0) @binding(2) var depthTexture : texture_2d<f32>;
|
|
|
|
@stage(fragment)
|
|
fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
|
|
let random : vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
|
|
var i = 0;
|
|
loop {
|
|
if ((i < 1)) {
|
|
} else {
|
|
break;
|
|
}
|
|
let offset : vec3<f32> = vec3<f32>(random.x);
|
|
if (((((offset.x < 0.0) || (offset.y < 0.0)) || (offset.x > 1.0)) || (offset.y > 1.0))) {
|
|
i = (i + 1);
|
|
continue;
|
|
}
|
|
let sampleDepth : f32 = textureSample(depthTexture, Sampler, offset.xy).r;
|
|
i = (i + 1);
|
|
}
|
|
return vec4<f32>(1.0);
|
|
}
|