summaryrefslogtreecommitdiff
path: root/glsl
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2022-08-30 17:45:40 -0300
committerFrederico Linhares <fred@linhares.blue>2022-08-30 17:45:40 -0300
commitf1f1576543bb4e0f3b9bc4cd0ba4a12a70546c3c (patch)
tree87160fb7462ee5b4385ba6e9b0ccb51657b2f796 /glsl
parent42e03ddc3b28c41b81fb5410feb72750530ffa13 (diff)
feat Create 2d graphics pipeline
Diffstat (limited to 'glsl')
-rw-r--r--glsl/shader.vert38
-rw-r--r--glsl/shader_2d.frag.glsl30
-rw-r--r--glsl/shader_2d.vert.glsl53
-rw-r--r--glsl/shader_3d.frag.glsl (renamed from glsl/shader.frag)16
-rw-r--r--glsl/shader_3d.vert.glsl54
5 files changed, 153 insertions, 38 deletions
diff --git a/glsl/shader.vert b/glsl/shader.vert
deleted file mode 100644
index 50dcec5..0000000
--- a/glsl/shader.vert
+++ /dev/null
@@ -1,38 +0,0 @@
-#version 450
-#extension GL_ARB_separate_shader_objects : enable
-
-layout(location = 0) in vec3 in_position;
-layout(location = 1) in vec3 in_normal;
-layout(location = 2) in vec2 in_texture_coord;
-
-
-layout(location = 0) out DataTransferObject
-{
- vec4 frag_color;
- vec2 frag_texture_coord;
- vec3 normal;
-} out_dto;
-
-layout(set = 0, binding = 0) uniform UBOViewProjection
-{
- mat4 view;
- mat4 proj;
- vec4 ambient_color;
-} ubo_view_projection;
-
-layout(set = 1, binding = 0) uniform UBOModelInstance
-{
- mat4 model[128];
-} ubo_model_instance;
-
-void
-main()
-{
- gl_Position =
- ubo_view_projection.proj * ubo_view_projection.view *
- ubo_model_instance.model[gl_InstanceIndex] * vec4(in_position, 1.0);
- out_dto.frag_color = ubo_view_projection.ambient_color;
- out_dto.frag_texture_coord = in_texture_coord;
- out_dto.normal = mat3(ubo_model_instance.model[gl_InstanceIndex]) *
- in_normal;
-}
diff --git a/glsl/shader_2d.frag.glsl b/glsl/shader_2d.frag.glsl
new file mode 100644
index 0000000..1edbbbb
--- /dev/null
+++ b/glsl/shader_2d.frag.glsl
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2022 Frederico de Oliveira Linhares
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(location = 0) in vec2 in_texture_coord;
+
+layout(location = 0) out vec4 out_color;
+
+layout(set = 0, binding = 1) uniform sampler2D texture_sampler;
+
+void
+main()
+{
+ out_color = texture(texture_sampler, in_texture_coord);
+}
diff --git a/glsl/shader_2d.vert.glsl b/glsl/shader_2d.vert.glsl
new file mode 100644
index 0000000..6e8ac59
--- /dev/null
+++ b/glsl/shader_2d.vert.glsl
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2022 Frederico de Oliveira Linhares
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(location = 0) in vec2 in_texture_coord;
+
+layout(location = 0) out vec2 out_texture_coord;
+
+layout(set = 0, binding = 0) uniform UBOSpritePositions
+{
+ vec4 positions[128];
+} ubo_sprite_positions;
+
+void
+main()
+{
+ vec2 coordinate;
+ vec4 position = ubo_sprite_positions.positions[gl_InstanceIndex];
+
+ out_texture_coord = in_texture_coord;
+
+ switch(gl_VertexIndex)
+ {
+ case 0:
+ coordinate = vec2(position.x, position.y);
+ break;
+ case 1:
+ coordinate = vec2(position.x, position.w);
+ break;
+ case 2:
+ coordinate = vec2(position.z, position.y);
+ break;
+ case 3:
+ coordinate = vec2(position.z, position.w);
+ break;
+ }
+ gl_Position = vec4(coordinate, 0.0, 1.0);
+}
diff --git a/glsl/shader.frag b/glsl/shader_3d.frag.glsl
index 8ecf883..5c4b857 100644
--- a/glsl/shader.frag
+++ b/glsl/shader_3d.frag.glsl
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022 Frederico de Oliveira Linhares
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
#version 450
#extension GL_ARB_separate_shader_objects : enable
diff --git a/glsl/shader_3d.vert.glsl b/glsl/shader_3d.vert.glsl
new file mode 100644
index 0000000..387ad00
--- /dev/null
+++ b/glsl/shader_3d.vert.glsl
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2022 Frederico de Oliveira Linhares
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(location = 0) in vec3 in_position;
+layout(location = 1) in vec3 in_normal;
+layout(location = 2) in vec2 in_texture_coord;
+
+
+layout(location = 0) out DataTransferObject
+{
+ vec4 frag_color;
+ vec2 frag_texture_coord;
+ vec3 normal;
+} out_dto;
+
+layout(set = 0, binding = 0) uniform UBOViewProjection
+{
+ mat4 view;
+ mat4 proj;
+ vec4 ambient_color;
+} ubo_view_projection;
+
+layout(set = 1, binding = 0) uniform UBOModelInstance
+{
+ mat4 instances[128];
+} ubo_model_instance;
+
+void
+main()
+{
+ gl_Position =
+ ubo_view_projection.proj * ubo_view_projection.view *
+ ubo_model_instance.instances[gl_InstanceIndex] * vec4(in_position, 1.0);
+ out_dto.frag_color = ubo_view_projection.ambient_color;
+ out_dto.frag_texture_coord = in_texture_coord;
+ out_dto.normal = mat3(ubo_model_instance.instances[gl_InstanceIndex]) *
+ in_normal;
+}