From e83ebc1d870a39545e864da607f08d79c00d987d Mon Sep 17 00:00:00 2001 From: Jake Swenson Date: Fri, 11 Oct 2024 17:59:53 -0700 Subject: [PATCH] examples(shaders/glsl): Update GLSL Shader Example Camera View uniform The Custom Material GLSL shader example had what seemed to be an old version of the camera view uniform. I was running into issues using camera world position and someone in discord pointed me to the source of truth. crates/bevy_render/src/view/view.wgsl Since this was helpful to me I've updated the shader example to have the latest view uniform structure converted to GLSL. I tested it with: ```bash cargo run --features shader_format_glsl --example shader_material_glsl ``` --- assets/shaders/custom_material.vert | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/assets/shaders/custom_material.vert b/assets/shaders/custom_material.vert index 91d660ec3194c..ea3020cd5fe1e 100644 --- a/assets/shaders/custom_material.vert +++ b/assets/shaders/custom_material.vert @@ -7,14 +7,19 @@ layout(location = 2) in vec2 Vertex_Uv; layout(location = 0) out vec2 v_Uv; layout(set = 0, binding = 0) uniform CameraViewProj { - mat4 ViewProj; - mat4 View; - mat4 InverseView; - mat4 Projection; - vec3 WorldPosition; - float width; - float height; -}; + mat4 clip_from_world; + mat4 unjittered_clip_from_world; + mat4 world_from_clip; + mat4 world_from_view; + mat4 view_from_world; + mat4 clip_from_view; + mat4 view_from_clip; + vec3 world_position; // Camera's world position + float exposure; + vec4 viewport; // viewport(x_origin, y_origin, width, height) + vec4 frustum[6]; + // See full definition in: crates/bevy_render/src/view/view.wgsl +} camera_view; struct Mesh { mat3x4 Model; @@ -41,7 +46,7 @@ mat4 affine_to_square(mat3x4 affine) { void main() { v_Uv = Vertex_Uv; - gl_Position = ViewProj + gl_Position = camera_view.clip_from_world * affine_to_square(Meshes[gl_InstanceIndex].Model) * vec4(Vertex_Position, 1.0); }