11const uniforms = `
2- // Group 1: Camera and Projection
3- struct CameraUniforms {
4- uViewMatrix: mat4x4<f32>,
5- uProjectionMatrix: mat4x4<f32>,
6- uCameraNormalMatrix: mat3x3<f32>,
7- }
8-
9- // Group 2: Model Transform
10- struct ModelUniforms {
11- // @p5 ifdef Vertex getWorldInputs
12- uModelMatrix: mat4x4<f32>,
13- uModelNormalMatrix: mat3x3<f32>,
14- // @p5 endif
15- // @p5 ifndef Vertex getWorldInputs
16- uModelViewMatrix: mat4x4<f32>,
17- uNormalMatrix: mat3x3<f32>,
18- // @p5 endif
19- uMaterialColor: vec4<f32>,
20- }
21-
22- // Group 3: Material Properties
2+ // Group 0: Material Properties
233struct MaterialUniforms {
244 uUseVertexColor: u32,
255 uHasSetAmbient: u32,
@@ -34,7 +14,7 @@ struct MaterialUniforms {
3414 uMetallic: f32,
3515}
3616
37- // Group 4 : Lighting
17+ // Group 0 : Lighting
3818struct LightingUniforms {
3919 uDirectionalLightCount: i32,
4020 uLightingDirection: array<vec3<f32>, 5>,
@@ -57,6 +37,26 @@ struct LightingUniforms {
5737 uUseImageLight: u32,
5838 uUseLighting: u32,
5939}
40+
41+ // Group 1: Model Transform
42+ struct ModelUniforms {
43+ // @p5 ifdef Vertex getWorldInputs
44+ uModelMatrix: mat4x4<f32>,
45+ uModelNormalMatrix: mat3x3<f32>,
46+ // @p5 endif
47+ // @p5 ifndef Vertex getWorldInputs
48+ uModelViewMatrix: mat4x4<f32>,
49+ uNormalMatrix: mat3x3<f32>,
50+ // @p5 endif
51+ uMaterialColor: vec4<f32>,
52+ }
53+
54+ // Group 2: Camera and Projection
55+ struct CameraUniforms {
56+ uViewMatrix: mat4x4<f32>,
57+ uProjectionMatrix: mat4x4<f32>,
58+ uCameraNormalMatrix: mat3x3<f32>,
59+ }
6060` ;
6161
6262export const materialVertexShader = `
@@ -76,10 +76,10 @@ struct VertexOutput {
7676};
7777
7878${ uniforms }
79- @group(0) @binding(0) var<uniform> camera: CameraUniforms ;
80- @group(0) @binding(1) var<uniform> model: ModelUniforms ;
81- @group(0 ) @binding(2 ) var<uniform> material: MaterialUniforms ;
82- @group(0 ) @binding(3 ) var<uniform> lighting: LightingUniforms ;
79+ @group(0) @binding(0) var<uniform> material: MaterialUniforms ;
80+ @group(0) @binding(1) var<uniform> lighting: LightingUniforms ;
81+ @group(1 ) @binding(0 ) var<uniform> model: ModelUniforms ;
82+ @group(2 ) @binding(0 ) var<uniform> camera: CameraUniforms ;
8383
8484struct Vertex {
8585 position: vec3<f32>,
@@ -147,18 +147,16 @@ struct FragmentInput {
147147};
148148
149149${ uniforms }
150- @group(0) @binding(0) var<uniform> camera: CameraUniforms;
151- @group(0) @binding(1) var<uniform> model: ModelUniforms;
152- @group(0) @binding(2) var<uniform> material: MaterialUniforms;
153- @group(0) @binding(3) var<uniform> lighting: LightingUniforms;
154-
155- @group(0) @binding(4) var uSampler: texture_2d<f32>;
156- @group(0) @binding(5) var uSampler_sampler: sampler;
157-
158- @group(0) @binding(6) var environmentMapDiffused: texture_2d<f32>;
159- @group(0) @binding(7) var environmentMapDiffused_sampler: sampler;
160- @group(0) @binding(8) var environmentMapSpecular: texture_2d<f32>;
161- @group(0) @binding(9) var environmentMapSpecular_sampler: sampler;
150+ @group(0) @binding(0) var<uniform> material: MaterialUniforms;
151+ @group(0) @binding(1) var<uniform> lighting: LightingUniforms;
152+ @group(0) @binding(2) var uSampler: texture_2d<f32>;
153+ @group(0) @binding(3) var uSampler_sampler: sampler;
154+ @group(0) @binding(4) var environmentMapDiffused: texture_2d<f32>;
155+ @group(0) @binding(5) var environmentMapDiffused_sampler: sampler;
156+ @group(0) @binding(6) var environmentMapSpecular: texture_2d<f32>;
157+ @group(0) @binding(7) var environmentMapSpecular_sampler: sampler;
158+ @group(1) @binding(0) var<uniform> model: ModelUniforms;
159+ @group(2) @binding(0) var<uniform> camera: CameraUniforms;
162160
163161struct ColorComponents {
164162 baseColor: vec3<f32>,
0 commit comments