Clean-up and deinit proc

This commit is contained in:
2025-06-21 16:48:25 +02:00
parent 201a7ee742
commit 788775b0f3
6 changed files with 84 additions and 22 deletions

View File

@@ -171,6 +171,7 @@ Shader_Info :: struct {
}
Shader :: struct {
compiled : bool;
type : Shader_Type;
backend_shader : Backend_Shader;
defines : [..] string;
@@ -720,6 +721,13 @@ init_default_pipelines :: () {
engine.renderer.default_pipelines.message_text = create_pipeline_state(renderer, vs, ps, layout, params, blend_type=.TRANSPARENT);
}
{
vs := create_vertex_shader_from_source(engine.renderer, FALLBACK_SHADER, "VS", mesh_data_types = .[.POSITION]);
ps := create_pixel_shader_from_source(engine.renderer, FALLBACK_SHADER, "PS");
projectile_pipeline = create_pipeline_state2(engine.renderer, vs, ps, blend_type=.OPAQUE);
}
}
init_default_meshes :: () {
@@ -879,14 +887,17 @@ create_shader :: (using renderer: *Renderer, path: string, entry_point: string,
backend_shader, info, success := create_backend_shader(engine.renderer.backend, path, entry_point, shader_type, defines);
if success {
shader.info = info;
shader.backend_shader = backend_shader;
array_add(*shaders, shader);
return xx shaders.count;
if !success {
log_error("Error: Failed compiling shader '%'\n", path);
}
return 0;
shader.info = info;
shader.compiled = success;
shader.backend_shader = backend_shader;
array_add(*shaders, shader);
return xx shaders.count;
}
reload_shader :: (using renderer: *Renderer, shader: *Shader) {
@@ -922,14 +933,16 @@ create_shader_from_source :: (using renderer: *Renderer, name: string, source: s
backend_shader, info, success := create_backend_shader_from_source(engine.renderer.backend, name, source, entry_point, shader_type, defines);
if success {
shader.info = info;
shader.backend_shader = backend_shader;
array_add(*shaders, shader);
return xx shaders.count;
if !success {
log_error("Error: Failed compiling shader '%'\n", name);
}
return 0;
shader.info = info;
shader.compiled = success;
shader.backend_shader = backend_shader;
array_add(*shaders, shader);
return xx shaders.count;
}
create_vertex_shader :: #bake_arguments create_shader(shader_type=.VERTEX);
@@ -1067,7 +1080,7 @@ create_sampler :: (using renderer: *Renderer, filter: Sampling_Filter = .LINEAR,
return 0;
}
create_pipeline_state2 :: (using renderer: *Renderer, vs: Shader_Handle, ps: Shader_Handle, blend_type: Blend_Type = .OPAQUE) -> Pipeline_State_Handle {
create_pipeline_state :: (using renderer: *Renderer, vs: Shader_Handle, ps: Shader_Handle, blend_type: Blend_Type = .OPAQUE) -> Pipeline_State_Handle {
pipeline_state : Pipeline_State;
pipeline_state.is_new = true;
pipeline_state.vs = vs;
@@ -1688,3 +1701,26 @@ file_change_callback :: (watcher: *File_Watcher(string), change: *File_Change, u
}
}
}
FALLBACK_SHADER :: #string DONE
cbuffer Model : register(b0)
{
float4x4 model;
};
struct PSInput {
float4 position : SV_POSITION;
};
PSInput VS(float3 pos : POSITION) {
PSInput input;
input.position = mul(float4(pos, 1.0), model);
return input;
}
float4 PS(PSInput input) : SV_Target {
return float4(1,0,1,1);
}
DONE