Harbor

branch main
showing the latest snapshot on main
workflow_vertex.msl 852 B · Plain text
gpu/shader/tests/golden/workflow_vertex.msl 0644 Raw
#include <metal_stdlib>
using namespace metal;

struct Uniforms {
	float4x4 model;
	float4x4 view_proj;
	float4x4 normal_mat;
};

struct _transform_Input {
	float3 position [[attribute(0)]];
	float3 normal [[attribute(1)]];
	float2 uv [[attribute(2)]];
};

struct _transform_Output {
	float4 position [[position]];
	float2 uv [[user(locn0)]];
	float3 normal [[user(locn1)]];
};

vertex _transform_Output transform(_transform_Input input [[stage_in]],
	constant Uniforms& uniforms [[buffer(0)]]) {
	_transform_Output __luma_output;
	float3 pos = input.position;
	float4 world_pos = (uniforms.model * float4(pos, 1.0));
	float4 clip_pos = (uniforms.view_proj * world_pos);
	__luma_output.position = clip_pos;
	__luma_output.uv = input.uv;
	__luma_output.normal = normalize((uniforms.normal_mat * float4(input.normal, 0.0)).xyz);
	return __luma_output;
}