summaryrefslogtreecommitdiff
path: root/glsl/shader_3d.vert.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/shader_3d.vert.glsl
parent42e03ddc3b28c41b81fb5410feb72750530ffa13 (diff)
feat Create 2d graphics pipeline
Diffstat (limited to 'glsl/shader_3d.vert.glsl')
-rw-r--r--glsl/shader_3d.vert.glsl54
1 files changed, 54 insertions, 0 deletions
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;
+}