Skip to content

Commit 44c492a

Browse files
committed
shorter shader assembly
1 parent c9e65c1 commit 44c492a

1 file changed

Lines changed: 6 additions & 15 deletions

File tree

  • lib/PDL/Graphics/TriD

lib/PDL/Graphics/TriD/GL.pm

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ my %SHADERBITS = (
7575
version => <<'EOF',
7676
#version 120
7777
EOF
78+
main_start => "void main() {\n",
79+
main_end => "}\n",
7880
light => <<'EOF',
7981
/* modified from https://community.khronos.org/t/help-with-gouraud-phong-shading-in-shaders/73192/2 */
8082
void light(int lightIndex, vec3 position, vec3 norm, vec4 in_diffuse, out vec4 diffuse, out vec4 spec) {
@@ -91,6 +93,8 @@ EOF
9193
vs_in => <<'EOF',
9294
vec3 the_position = position;
9395
EOF
96+
vs_in_offset_decl => "attribute vec3 offset;\n",
97+
vs_do_offset => " the_position += offset;\n",
9498
vs_out => <<'EOF',
9599
gl_Position = gl_ModelViewProjectionMatrix * vec4(the_position, 1);
96100
EOF
@@ -460,21 +464,8 @@ use OpenGL::Modern qw(
460464
glIsProgram glVertexAttribDivisor glDrawElementsInstancedARB_c
461465
GL_TRIANGLE_STRIP GL_UNSIGNED_INT
462466
);
463-
my $vertex_shader = sprintf <<'EOF', @SHADERBITS{qw(version vs_in_position_decl vs_in_normal_decl fs_in_position_decl fs_in_normal_decl vs_in vs_out vs_out_light)};
464-
%s%s%s%s%s
465-
attribute vec3 offset;
466-
void main() {
467-
%s
468-
the_position += offset;
469-
%s%s
470-
}
471-
EOF
472-
my $fragment_shader = sprintf <<'EOF', @SHADERBITS{qw(version fs_in_position_decl fs_in_normal_decl fs_lightind_decl light fs_diffuse_material fs_out_light)};
473-
%s%s%s%s%s
474-
void main() {
475-
%s%s
476-
}
477-
EOF
467+
my $vertex_shader = join '', @SHADERBITS{qw(version vs_in_position_decl vs_in_normal_decl fs_in_position_decl fs_in_normal_decl vs_in_offset_decl main_start vs_in vs_do_offset vs_out vs_out_light main_end)};
468+
my $fragment_shader = join '', @SHADERBITS{qw(version fs_in_position_decl fs_in_normal_decl fs_lightind_decl light main_start fs_diffuse_material fs_out_light main_end)};
478469
my %SPHERE;
479470
my @KEYS = qw(vertices normals idx);
480471
my $SHADER_PROGRAM;

0 commit comments

Comments
 (0)