Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <metal_stdlib>
- #include <simd/simd.h>
- // Including header shared between this Metal shader code and Swift/C code executing Metal API commands
- #import "ShaderTypes.h"
- using namespace metal;
- typedef struct
- {
- float3 position [[attribute(VertexAttributePosition)]];
- float2 texCoord [[attribute(VertexAttributeTexcoord)]];
- } Vertex;
- typedef struct
- {
- float4 position [[position]];
- float2 texCoord;
- } ColorInOut;
- vertex ColorInOut vertexShader(Vertex in [[stage_in]],
- constant Uniforms & uniforms [[ buffer(BufferIndexUniforms) ]])
- {
- ColorInOut out;
- float4 position = float4(in.position, 1.0);
- out.position = uniforms.projectionMatrix * uniforms.modelViewMatrix * position;
- out.texCoord = in.texCoord;
- return out;
- }
- fragment float4 fragmentShader(ColorInOut in [[stage_in]],
- constant Uniforms & uniforms [[ buffer(BufferIndexUniforms) ]],
- texture2d<half> colorMap [[ texture(TextureIndexColor) ]])
- {
- constexpr sampler colorSampler(mip_filter::linear,
- mag_filter::linear,
- min_filter::linear);
- return float4(colorMap.sample(colorSampler, in.texCoord.xy));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement