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); +}