diff options
Diffstat (limited to 'glsl')
-rw-r--r-- | glsl/shader.vert | 38 | ||||
-rw-r--r-- | glsl/shader_2d.frag.glsl | 30 | ||||
-rw-r--r-- | glsl/shader_2d.vert.glsl | 53 | ||||
-rw-r--r-- | glsl/shader_3d.frag.glsl (renamed from glsl/shader.frag) | 16 | ||||
-rw-r--r-- | glsl/shader_3d.vert.glsl | 54 |
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; +} |