Skip to content

Commit

Permalink
[glsl-in] set initializer of local variables
Browse files Browse the repository at this point in the history
  • Loading branch information
teoxoy authored and jimblandy committed Sep 7, 2023
1 parent da6066d commit f8355c7
Show file tree
Hide file tree
Showing 15 changed files with 46 additions and 98 deletions.
3 changes: 1 addition & 2 deletions src/front/glsl/parser/declarations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,7 @@ impl<'source> ParsingContext<'source> {
} else if ctx.external {
init.and_then(|expr| ctx.ctx.lift_up_const_expression(expr).ok())
} else {
None
// init.filter(|expr| ctx.ctx.expressions.is_const(*expr))
init.filter(|expr| ctx.ctx.expressions.is_const(*expr))
};

let pointer = ctx.add_var(frontend, ty, name, maybe_const_expr, meta)?;
Expand Down
3 changes: 1 addition & 2 deletions tests/out/wgsl/246-collatz-comp.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ var<private> gl_GlobalInvocationID: vec3<u32>;

fn collatz_iterations(n: u32) -> u32 {
var n_1: u32;
var i: u32;
var i: u32 = 0u;

n_1 = n;
i = 0u;
loop {
let _e7 = n_1;
if !((_e7 != 1u)) {
Expand Down
3 changes: 1 addition & 2 deletions tests/out/wgsl/277-casting-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
fn main_1() {
var a: f32;
var a: f32 = 1.0;

a = 1.0;
return;
}

Expand Down
4 changes: 1 addition & 3 deletions tests/out/wgsl/280-matrix-cast-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
fn main_1() {
var a: mat4x4<f32>;
var a: mat4x4<f32> = mat4x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));

a = mat4x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));
return;
}

@fragment
Expand Down
3 changes: 1 addition & 2 deletions tests/out/wgsl/901-lhs-field-select-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
fn main_1() {
var a: vec4<f32>;
var a: vec4<f32> = vec4(1.0);

a = vec4(1.0);
a.x = 2.0;
return;
}
Expand Down
3 changes: 1 addition & 2 deletions tests/out/wgsl/932-for-loop-if-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
fn main_1() {
var i: i32;
var i: i32 = 0;

i = 0;
loop {
let _e2 = i;
if !((_e2 < 1)) {
Expand Down
18 changes: 6 additions & 12 deletions tests/out/wgsl/bevy-pbr-frag.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -328,17 +328,15 @@ fn EnvBRDFApprox(f0_7: vec3<f32>, perceptual_roughness: f32, NoV_6: f32) -> vec3
var f0_8: vec3<f32>;
var perceptual_roughness_1: f32;
var NoV_7: f32;
var c0_: vec4<f32>;
var c1_: vec4<f32>;
var c0_: vec4<f32> = vec4<f32>(-1.0, -0.0275, -0.572, 0.022);
var c1_: vec4<f32> = vec4<f32>(1.0, 0.0425, 1.04, -0.04);
var r: vec4<f32>;
var a004_: f32;
var AB: vec2<f32>;

f0_8 = f0_7;
perceptual_roughness_1 = perceptual_roughness;
NoV_7 = NoV_6;
c0_ = vec4<f32>(-1.0, -0.0275, -0.572, 0.022);
c1_ = vec4<f32>(1.0, 0.0425, 1.04, -0.04);
let _e62 = perceptual_roughness_1;
let _e64 = c0_;
let _e66 = c1_;
Expand Down Expand Up @@ -638,7 +636,7 @@ fn dir_light(light_2: DirectionalLight, roughness_10: f32, NdotV_2: f32, normal:
var NoH_5: f32;
var LoH_7: f32;
var diffuse_1: vec3<f32>;
var specularIntensity_3: f32;
var specularIntensity_3: f32 = 1.0;
var specular_2: vec3<f32>;

light_3 = light_2;
Expand Down Expand Up @@ -678,7 +676,6 @@ fn dir_light(light_2: DirectionalLight, roughness_10: f32, NdotV_2: f32, normal:
let _e124 = LoH_7;
let _e125 = Fd_Burley(_e121, _e122, _e123, _e124);
diffuse_1 = (_e116 * _e125);
specularIntensity_3 = 1.0;
let _e138 = F0_3;
let _e139 = roughness_11;
let _e140 = half_vector;
Expand Down Expand Up @@ -716,9 +713,9 @@ fn main_1() {
var F0_4: vec3<f32>;
var diffuseColor_4: vec3<f32>;
var R_4: vec3<f32>;
var light_accum: vec3<f32>;
var i: i32;
var i_1: i32;
var light_accum: vec3<f32> = vec3(0.0);
var i: i32 = 0;
var i_1: i32 = 0;
var diffuse_ambient: vec3<f32>;
var specular_ambient: vec3<f32>;

Expand Down Expand Up @@ -825,8 +822,6 @@ fn main_1() {
let _e217 = V_3;
let _e219 = N_2;
R_4 = reflect(-(_e217), _e219);
light_accum = vec3(0.0);
i = 0;
loop {
let _e227 = i;
let _e228 = global_2.NumLights;
Expand Down Expand Up @@ -854,7 +849,6 @@ fn main_1() {
i = (_e236 + 1);
}
}
i_1 = 0;
loop {
let _e264 = i_1;
let _e265 = global_2.NumLights;
Expand Down
30 changes: 10 additions & 20 deletions tests/out/wgsl/bits_glsl-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
fn main_1() {
var i: i32;
var i2_: vec2<i32>;
var i3_: vec3<i32>;
var i4_: vec4<i32>;
var u: u32;
var u2_: vec2<u32>;
var u3_: vec3<u32>;
var u4_: vec4<u32>;
var f2_: vec2<f32>;
var f4_: vec4<f32>;
var i: i32 = 0;
var i2_: vec2<i32> = vec2(0);
var i3_: vec3<i32> = vec3(0);
var i4_: vec4<i32> = vec4(0);
var u: u32 = 0u;
var u2_: vec2<u32> = vec2(0u);
var u3_: vec3<u32> = vec3(0u);
var u4_: vec4<u32> = vec4(0u);
var f2_: vec2<f32> = vec2(0.0);
var f4_: vec4<f32> = vec4(0.0);

i = 0;
i2_ = vec2(0);
i3_ = vec3(0);
i4_ = vec4(0);
u = 0u;
u2_ = vec2(0u);
u3_ = vec3(0u);
u4_ = vec4(0u);
f2_ = vec2(0.0);
f4_ = vec4(0.0);
let _e33 = f4_;
u = pack4x8snorm(_e33);
let _e36 = f4_;
Expand Down
6 changes: 2 additions & 4 deletions tests/out/wgsl/constant-array-size-frag.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@ const NUM_VECS: i32 = 42;
var<uniform> global: Data;

fn function() -> vec4<f32> {
var sum: vec4<f32>;
var i: i32;
var sum: vec4<f32> = vec4(0.0);
var i: i32 = 0;

sum = vec4(0.0);
i = 0;
loop {
let _e9 = i;
if !((_e9 < NUM_VECS)) {
Expand Down
6 changes: 2 additions & 4 deletions tests/out/wgsl/declarations-frag.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,12 @@ var<private> array_2d: array<array<f32, 2>, 2>;
var<private> array_toomanyd: array<array<array<array<array<array<array<f32, 2>, 2>, 2>, 2>, 2>, 2>, 2>;

fn main_1() {
var positions: array<vec3<f32>, 2>;
var strct: TestStruct;
var positions: array<vec3<f32>, 2> = array<vec3<f32>, 2>(vec3<f32>(-1.0, 1.0, 0.0), vec3<f32>(-1.0, -1.0, 0.0));
var strct: TestStruct = TestStruct(1.0, 2.0);
var from_input_array: vec4<f32>;
var a_1: f32;
var b: f32;

positions = array<vec3<f32>, 2>(vec3<f32>(-1.0, 1.0, 0.0), vec3<f32>(-1.0, -1.0, 0.0));
strct = TestStruct(1.0, 2.0);
let _e35 = in_array_2[1];
from_input_array = _e35;
let _e41 = array_2d[0][0];
Expand Down
19 changes: 5 additions & 14 deletions tests/out/wgsl/expressions-frag.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -280,35 +280,28 @@ fn testUnaryOpMat(a_16: mat3x3<f32>) {
}

fn testStructConstructor() {
var tree: BST;
var tree: BST = BST(1);

tree = BST(1);
return;
}

fn testNonScalarToScalarConstructor() {
var f: f32;
var f: f32 = 1.0;

f = 1.0;
return;
}

fn testArrayConstructor() {
var tree_1: array<f32, 1>;
var tree_1: array<f32, 1> = array<f32, 1>(0.0);

tree_1 = array<f32, 1>(0.0);
return;
}

fn testFreestandingConstructor() {
return;
}

fn testNonImplicitCastVectorCast() {
var a_18: u32;
var a_18: u32 = 1u;
var b_16: vec4<i32>;

a_18 = 1u;
let _e3 = a_18;
b_16 = vec4(i32(_e3));
return;
Expand Down Expand Up @@ -393,11 +386,9 @@ fn testLength() {

fn testConstantLength(a_24: array<f32, 4>) {
var a_25: array<f32, 4>;
var len_1: i32;
var len_1: i32 = 4;

a_25 = a_24;
len_1 = 4;
return;
}

fn indexConstantNonConstantIndex(i: i32) {
Expand Down
25 changes: 8 additions & 17 deletions tests/out/wgsl/long-form-matrix-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
fn main_1() {
var splat: mat2x2<f32>;
var normal: mat2x2<f32>;
var from_matrix: mat2x4<f32>;
var a: mat2x2<f32>;
var b: mat2x2<f32>;
var c: mat3x3<f32>;
var d: mat3x3<f32>;
var e: mat4x4<f32>;
var splat: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
var normal: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 1.0), vec2<f32>(2.0, 2.0));
var from_matrix: mat2x4<f32> = mat2x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0));
var a: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
var b: mat2x2<f32> = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
var c: mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(1.0, 1.0, 1.0), vec3<f32>(1.0, 1.0, 1.0));
var d: mat3x3<f32> = mat3x3<f32>(vec3<f32>(2.0, 2.0, 1.0), vec3<f32>(1.0, 1.0, 1.0), vec3<f32>(1.0, 1.0, 1.0));
var e: mat4x4<f32> = mat4x4<f32>(vec4<f32>(2.0, 2.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 2.0, 2.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));

splat = mat2x2<f32>(vec2<f32>(1.0, 0.0), vec2<f32>(0.0, 1.0));
normal = mat2x2<f32>(vec2<f32>(1.0, 1.0), vec2<f32>(2.0, 2.0));
from_matrix = mat2x4<f32>(vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0));
a = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
b = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
c = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(1.0, 1.0, 1.0), vec3<f32>(1.0, 1.0, 1.0));
d = mat3x3<f32>(vec3<f32>(2.0, 2.0, 1.0), vec3<f32>(1.0, 1.0, 1.0), vec3<f32>(1.0, 1.0, 1.0));
e = mat4x4<f32>(vec4<f32>(2.0, 2.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 2.0, 2.0), vec4<f32>(1.0, 1.0, 1.0, 1.0), vec4<f32>(1.0, 1.0, 1.0, 1.0));
return;
}

@fragment
Expand Down
9 changes: 3 additions & 6 deletions tests/out/wgsl/math-functions-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
fn main_1() {
var a: vec4<f32>;
var b: vec4<f32>;
var a: vec4<f32> = vec4(1.0);
var b: vec4<f32> = vec4(2.0);
var m: mat4x4<f32>;
var i: i32;
var i: i32 = 5;
var ceilOut: vec4<f32>;
var roundOut: vec4<f32>;
var floorOut: vec4<f32>;
Expand Down Expand Up @@ -49,14 +49,11 @@ fn main_1() {
var smoothStepVector: vec4<f32>;
var smoothStepMixed: vec4<f32>;

a = vec4(1.0);
b = vec4(2.0);
let _e6 = a;
let _e7 = b;
let _e8 = a;
let _e9 = b;
m = mat4x4<f32>(vec4<f32>(_e6.x, _e6.y, _e6.z, _e6.w), vec4<f32>(_e7.x, _e7.y, _e7.z, _e7.w), vec4<f32>(_e8.x, _e8.y, _e8.z, _e8.w), vec4<f32>(_e9.x, _e9.y, _e9.z, _e9.w));
i = 5;
let _e35 = a;
ceilOut = ceil(_e35);
let _e39 = a;
Expand Down
9 changes: 3 additions & 6 deletions tests/out/wgsl/prepostfix-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,28 +1,25 @@
fn main_1() {
var scalar_target: i32;
var scalar: i32;
var scalar: i32 = 1;
var vec_target: vec2<u32>;
var vec: vec2<u32>;
var vec: vec2<u32> = vec2(1u);
var mat_target: mat4x3<f32>;
var mat: mat4x3<f32>;
var mat: mat4x3<f32> = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));

scalar = 1;
let _e3 = scalar;
scalar = (_e3 + 1);
scalar_target = _e3;
let _e6 = scalar;
let _e8 = (_e6 - 1);
scalar = _e8;
scalar_target = _e8;
vec = vec2(1u);
let _e14 = vec;
vec = (_e14 - vec2(1u));
vec_target = _e14;
let _e18 = vec;
let _e21 = (_e18 + vec2(1u));
vec = _e21;
vec_target = _e21;
mat = mat4x3<f32>(vec3<f32>(1.0, 0.0, 0.0), vec3<f32>(0.0, 1.0, 0.0), vec3<f32>(0.0, 0.0, 1.0), vec3<f32>(0.0, 0.0, 0.0));
let _e32 = mat;
let _e34 = vec3(1.0);
mat = (_e32 + mat4x3<f32>(_e34, _e34, _e34, _e34));
Expand Down
3 changes: 1 addition & 2 deletions tests/out/wgsl/sampler-functions-frag.wgsl
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
fn CalcShadowPCF1_(T_P_t_TextureDepth: texture_depth_2d, S_P_t_TextureDepth: sampler_comparison, t_ProjCoord: vec3<f32>) -> f32 {
var t_ProjCoord_1: vec3<f32>;
var t_Res: f32;
var t_Res: f32 = 0.0;

t_ProjCoord_1 = t_ProjCoord;
t_Res = 0.0;
let _e6 = t_Res;
let _e7 = t_ProjCoord_1;
let _e9 = t_ProjCoord_1;
Expand Down

0 comments on commit f8355c7

Please sign in to comment.