diff options
| author | Connor Thomson <blumatrikz@gmail.com> | 2026-09-25 19:47:30 -0700 |
|---|---|---|
| committer | Connor Thomson <blumatrikz@gmail.com> | 2026-09-25 19:47:30 -0700 |
| commit | a53d076f94c4b38ac511d6d3a5d4fc21e026b183 (patch) | |
| tree | 48e44b71aaa71399b969be025064c2cc076e1d3a /src/model.c | |
| parent | 251b611fef77533082165bab0b88eefa05b49fbe (diff) | |
Diffstat (limited to 'src/model.c')
| -rw-r--r-- | src/model.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/model.c b/src/model.c index 2c78850..396e70a 100644 --- a/src/model.c +++ b/src/model.c @@ -145,7 +145,7 @@ typedef struct ta_model_light_uniforms { float shadow_minimum_bias; float shadow_maximum_bias; float shadow_strength; - float padding; + float shadow_penumbra_scale; } ta_model_light_uniforms; typedef struct ta_model_shadow_uniforms { @@ -182,7 +182,7 @@ bool ta_model_init(ta_model *model, SDL_GPUDevice *device, const float positions } model->vertex_count = (Uint32)model->mesh.vertex_count; SDL_GPUShader *vertex_shader = ta_model_shader(device, file_model_vert_slang_spv_start, file_model_vert_slang_spv_size, SDL_GPU_SHADERSTAGE_VERTEX, 0, 1); - SDL_GPUShader *fragment_shader = ta_model_shader(device, file_model_frag_slang_spv_start, file_model_frag_slang_spv_size, SDL_GPU_SHADERSTAGE_FRAGMENT, 1, 1); + SDL_GPUShader *fragment_shader = ta_model_shader(device, file_model_frag_slang_spv_start, file_model_frag_slang_spv_size, SDL_GPU_SHADERSTAGE_FRAGMENT, 2, 1); SDL_GPUVertexBufferDescription vertex_buffer = {.slot = 0, .pitch = sizeof(ta_model_vertex), .input_rate = SDL_GPU_VERTEXINPUTRATE_VERTEX}; SDL_GPUVertexAttribute attributes[2] = { { @@ -374,17 +374,24 @@ void ta_model_render(const ta_model *model, SDL_GPUCommandBuffer *command_buffer ta_shadow_light_direction[1], ta_shadow_light_direction[2] }, - .shadow_texel_size = 1.0f / (float)TA_SHADOW_MAP_SIZE, - .shadow_minimum_bias = ta_shadow_minimum_bias, - .shadow_maximum_bias = ta_shadow_maximum_bias, - .shadow_strength = ta_shadow_strength, + .shadow_texel_size = 1.0f / (float)TA_SHADOW_MAP_SIZE, + .shadow_minimum_bias = ta_shadow_minimum_bias, + .shadow_maximum_bias = ta_shadow_maximum_bias, + .shadow_strength = ta_shadow_strength, + .shadow_penumbra_scale = ta_shadow_penumbra_scale, }; - SDL_GPUTextureSamplerBinding shadow_binding = { - .texture = ta_shadow_texture, - .sampler = ta_shadow_sampler + SDL_GPUTextureSamplerBinding shadow_bindings[2] = { + { + .texture = ta_shadow_texture, + .sampler = ta_shadow_sampler + }, + { + .texture = ta_shadow_texture, + .sampler = ta_shadow_depth_sampler + }, }; SDL_PushGPUFragmentUniformData(command_buffer, 0, &light, sizeof(light)); - SDL_BindGPUFragmentSamplers(render_pass, 0, &shadow_binding, 1); + SDL_BindGPUFragmentSamplers(render_pass, 0, shadow_bindings, 2); } SDL_GPUBufferBinding binding = { |
