remove vertex_buffer and index_buffer for characters and character shadows

refactor world shader vertex position calculation
This commit is contained in:
Sven Balzer
2026-08-04 09:42:25 +02:00
parent 74d55cb087
commit 6a984b40d9
12 changed files with 229 additions and 224 deletions
+62 -33
View File
@@ -17,33 +17,62 @@ struct VertexShaderOutput_0
struct vertexInput_0
{
@location(0) pos_1 : vec3<f32>,
@location(1) uv_1 : vec2<f32>,
@location(2) world_pos_0 : vec2<f32>,
};
struct VertexShaderInput_0
{
vertex_index_0 : u32,
pos_2 : vec3<f32>,
uv_2 : vec2<f32>,
world_pos_1 : vec2<f32>,
};
@vertex
fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_1 : u32) -> VertexShaderOutput_0
fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_0 : u32) -> VertexShaderOutput_0
{
var _S2 : VertexShaderInput_0;
_S2.vertex_index_0 = vertex_index_1;
_S2.pos_2 = _S1.pos_1;
_S2.uv_2 = _S1.uv_1;
_S2.world_pos_1 = _S1.world_pos_0;
var _S3 : vec2<f32> = _S2.pos_2.xy * vec2<f32>(0.5f);
_S2.pos_2.x = _S3.x;
_S2.pos_2.y = _S3.y;
var output_0 : VertexShaderOutput_0;
output_0.pos_0 = (((mat4x4<f32>(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4<f32>(_S2.world_pos_1 + _S2.pos_2.xy + vec2<f32>(0.0f, -0.34999999403953552f), 0.0f, 1.0f))));
output_0.uv_0 = _S2.uv_2;
const _S2 : vec2<f32> = vec2<f32>(0.0f, 0.0f);
var vertex_uv_0 : vec2<f32>;
var vertex_pos_0 : vec2<f32>;
switch(vertex_index_0)
{
case u32(0):
{
const _S3 : vec2<f32> = vec2<f32>(-0.5f, 0.5f);
vertex_uv_0 = _S2;
vertex_pos_0 = _S3;
}
case u32(1):
{
const _S4 : vec2<f32> = vec2<f32>(-0.5f, -0.5f);
vertex_uv_0 = vec2<f32>(0.0f, 1.0f);
vertex_pos_0 = _S4;
}
case u32(2):
{
const _S5 : vec2<f32> = vec2<f32>(0.5f, -0.5f);
vertex_uv_0 = vec2<f32>(1.0f, 1.0f);
vertex_pos_0 = _S5;
}
case u32(3):
{
const _S6 : vec2<f32> = vec2<f32>(-0.5f, 0.5f);
vertex_uv_0 = _S2;
vertex_pos_0 = _S6;
}
case u32(4):
{
const _S7 : vec2<f32> = vec2<f32>(0.5f, -0.5f);
vertex_uv_0 = vec2<f32>(1.0f, 1.0f);
vertex_pos_0 = _S7;
}
case u32(5):
{
const _S8 : vec2<f32> = vec2<f32>(0.5f, 0.5f);
vertex_uv_0 = vec2<f32>(1.0f, 0.0f);
vertex_pos_0 = _S8;
}
default :
{
vertex_uv_0 = _S2;
vertex_pos_0 = _S2;
}
}
output_0.pos_0 = (((mat4x4<f32>(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4<f32>(_S1.world_pos_0 + vertex_pos_0 * vec2<f32>(0.5f) + vec2<f32>(0.0f, -0.34999999403953552f), 0.0f, 1.0f))));
output_0.uv_0 = vertex_uv_0;
return output_0;
}
@@ -56,15 +85,15 @@ fn GetDimensions_0( texture_texture_0 : texture_2d<f32>, texture_sampler_0 : sa
fn pixel_art_sample_0( input_texture_texture_0 : texture_2d<f32>, input_texture_sampler_0 : sampler, input_uv_0 : vec2<f32>) -> vec4<f32>
{
var dimensions_0 : vec2<f32>;
var _S4 : f32 = dimensions_0[i32(0)];
var _S5 : f32 = dimensions_0[i32(1)];
GetDimensions_0(input_texture_texture_0, input_texture_sampler_0, &(_S4), &(_S5));
dimensions_0[i32(0)] = _S4;
dimensions_0[i32(1)] = _S5;
var _S6 : vec2<f32> = input_uv_0 * dimensions_0.xy;
var _S7 : vec2<f32> = (floor(_S6) + min(fract(_S6) / (fwidth((_S6))), vec2<f32>(1.0f, 1.0f)) - vec2<f32>(0.5f)) / dimensions_0.xy;
var _S9 : f32 = dimensions_0[i32(0)];
var _S10 : f32 = dimensions_0[i32(1)];
GetDimensions_0(input_texture_texture_0, input_texture_sampler_0, &(_S9), &(_S10));
dimensions_0[i32(0)] = _S9;
dimensions_0[i32(1)] = _S10;
var _S11 : vec2<f32> = input_uv_0 * dimensions_0.xy;
var _S12 : vec2<f32> = (floor(_S11) + min(fract(_S11) / (fwidth((_S11))), vec2<f32>(1.0f, 1.0f)) - vec2<f32>(0.5f)) / dimensions_0.xy;
;
return (textureSample((input_texture_texture_0), (input_texture_sampler_0), (_S7)));
return (textureSample((input_texture_texture_0), (input_texture_sampler_0), (_S12)));
}
struct FragmentShaderOutput_0
@@ -74,15 +103,15 @@ struct FragmentShaderOutput_0
struct pixelInput_0
{
@location(0) uv_3 : vec2<f32>,
@location(0) uv_1 : vec2<f32>,
};
@fragment
fn main_fragment( _S8 : pixelInput_0, @builtin(position) pos_3 : vec4<f32>) -> FragmentShaderOutput_0
fn main_fragment( _S13 : pixelInput_0, @builtin(position) pos_1 : vec4<f32>) -> FragmentShaderOutput_0
{
var output_1 : FragmentShaderOutput_0;
var _S9 : vec4<f32> = pixel_art_sample_0(texture1_texture_0, texture1_sampler_0, _S8.uv_3);
output_1.color_0 = vec4<f32>(_S9.xyz * tint_0.xyz, _S9.w);
var _S14 : vec4<f32> = pixel_art_sample_0(texture1_texture_0, texture1_sampler_0, _S13.uv_1);
output_1.color_0 = vec4<f32>(_S14.xyz * tint_0.xyz, _S14.w);
return output_1;
}