From bd696eac1c4500f79545155b30562f3ee50aa5d4 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Mon, 19 Nov 2018 11:27:21 -0700 Subject: [PATCH] Write a quick pair of shaders for rendering normals --- Terrain2/Shaders/Shaders.metal | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Terrain2/Shaders/Shaders.metal b/Terrain2/Shaders/Shaders.metal index e7af820..4eb4fe0 100644 --- a/Terrain2/Shaders/Shaders.metal +++ b/Terrain2/Shaders/Shaders.metal @@ -30,6 +30,8 @@ typedef struct float2 texCoord; } ColorInOut; +#pragma mark - Geometry Shaders + vertex ColorInOut vertexShader(Vertex in [[stage_in]], texture2d heights [[texture(0)]], constant Uniforms & uniforms [[buffer(BufferIndexUniforms)]]) @@ -60,3 +62,23 @@ fragment float4 fragmentShader(ColorInOut in [[stage_in]], return float4(1.0); } + +#pragma mark - Normal Shaders + +vertex float4 normalVertexShader(constant float3 *positions [[buffer(BufferIndexMeshPositions)]], + constant float3 *normals [[buffer(BufferIndexNormals)]], + uint instID [[instance_id]], + uint vertID [[vertex_id]]) +{ + float3 out = positions[instID]; + if ( vertID == 1 ) + { + out += normals[instID]; + } + return float4(out, 1.0); +} + +fragment half4 normalFragmentShader() +{ + return half4(0.0, 0.0, 1.0, 1.0); +}