opengl.shaders: Use unified lighting and texturing 'snippets' for fragment shaders.

This commit is contained in:
Rod Kay
2024-02-23 22:35:12 +11:00
parent d1f702aab5
commit 68c1ff4764
17 changed files with 439 additions and 568 deletions

View File

@@ -77,8 +77,10 @@ is
begin
the_Program.Program := new openGL.Program.lit.item;
the_Program. vertex_Shader.define (Shader.Vertex, "assets/opengl/shader/lit_colored.vert");
the_Program.fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_colored.frag");
the_Program. vertex_Shader.define (Shader.Vertex, "assets/opengl/shader/lit_colored.vert");
the_Program.fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/lit_colored.frag"))));
the_Program.Program.define (the_Program. vertex_Shader'Access,
the_Program.fragment_Shader'Access);

View File

@@ -102,7 +102,7 @@ is
if is_Defined
then
raise Error with "The lit_colored_textured_skinned program has already been defined.";
raise Error with "The 'lit_colored_textured_skinned' program has already been defined.";
end if;
is_Defined := True;
@@ -110,8 +110,9 @@ is
-- Define the shaders and program.
--
vertex_Shader .define (Shader.Vertex, "assets/opengl/shader/lit_colored_skinned.vert");
fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_colored_skinned.frag");
fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/lit_colored_skinned.frag"))));
the_Program.define ( vertex_Shader'Access,
fragment_Shader'Access);
the_Program.enable;

View File

@@ -99,8 +99,24 @@ is
white_Texture := openGL.Texture.Forge.to_Texture (white_Image);
the_Program.Program := new openGL.Program.lit.item;
the_Program. vertex_Shader.define (Shader.Vertex, "assets/opengl/shader/lit_colored_textured.vert");
the_Program.fragment_Shader.define (Shader.Fragment, use_fragment_Shader);
the_Program.vertex_Shader.define (Shader.Vertex, "assets/opengl/shader/lit_colored_textured.vert");
if use_fragment_Shader = "assets/opengl/shader/lit_colored_text.frag"
then
the_Program.fragment_Shader.define (Shader.Fragment, use_fragment_Shader);
-- TODO: The below code produces ugly text. Investigate and fix.
--
-- the_Program.fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
-- 2 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
-- 3 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
-- 4 => to_Asset ("assets/opengl/shader/lit_colored_textured.frag"))));
else
the_Program.fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
4 => to_Asset ("assets/opengl/shader/lit_colored_textured.frag"))));
end if;
the_Program.Program.define (the_Program. vertex_Shader'Access,
the_Program.fragment_Shader'Access);

View File

@@ -126,7 +126,11 @@ is
white_Texture := openGL.Texture.Forge.to_Texture (white_Image);
vertex_Shader .define (Shader.Vertex, "assets/opengl/shader/lit_colored_textured_skinned.vert");
fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_colored_textured_skinned.frag");
fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
4 => to_Asset ("assets/opengl/shader/lit_colored_textured.frag"))));
-- fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_colored_textured_skinned.frag");
the_Program.define ( vertex_Shader'Access,
fragment_Shader'Access);

View File

@@ -82,8 +82,9 @@ is
vertex_Shader .define (Shader.Vertex, "assets/opengl/shader/lit_textured.vert");
fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/texturing.frag"),
3 => to_Asset ("assets/opengl/shader/lit_textured.frag"))));
2 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
4 => to_Asset ("assets/opengl/shader/lit_textured.frag"))));
the_Program := new openGL.Program.lit.item;
the_Program.define ( vertex_Shader'Access,
fragment_Shader'Access);

View File

@@ -115,8 +115,11 @@ is
white_Texture := openGL.Texture.Forge.to_Texture (white_Image);
vertex_Shader .define (Shader.Vertex, "assets/opengl/shader/lit_textured_skinned.vert");
fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_textured_skinned.frag");
-- fragment_Shader.define (Shader.Fragment, "assets/opengl/shader/lit_textured_skinned.frag");
fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/lighting-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
4 => to_Asset ("assets/opengl/shader/lit_textured.frag"))));
the_Program.define ( vertex_Shader'Access,
fragment_Shader'Access);
the_Program.enable;

View File

@@ -76,7 +76,7 @@ is
vertex_Shader .define (Shader.vertex, "assets/opengl/shader/textured.vert");
fragment_Shader.define (Shader.Fragment, (asset_Names' (1 => to_Asset ("assets/opengl/shader/version.header"),
2 => to_Asset ("assets/opengl/shader/texturing.frag"),
2 => to_Asset ("assets/opengl/shader/texturing-frag.snippet"),
3 => to_Asset ("assets/opengl/shader/textured.frag"))));
the_Program := new openGL.Program.item;