#include "rect_shared.hlsli" StructuredBuffer scene: register(t0, space0); cbuffer Uniforms : register(b0, space1) { float2 Extents; }; struct Input { float3 Position : TEXCOORD0; float3 Normal : TEXCOORD1; float4 Color : TEXCOORD2; float2 UV : TEXCOORD3; uint Bones : TEXCOORD4; uint weights : TEXCOORD5; uint Instance : SV_InstanceID; }; struct VertexOut { float4 Color : TEXCOORD0; float2 UV : TEXCOORD1; float2 pixelPosition: TEXCOORD2; uint Instance: TEXCOORD3; float4 Position : SV_Position; }; VertexOut main(Input v) { VertexOut o; Scene s = scene[v.Instance]; float2 finalSize = (s.imageSize / Extents); //float zLevel = objectBuffer.objects[gl_BaseInstance].zLevel; float2 finalPos = ((s.imagePosition / Extents) * 2 - 1) - s.anchorPoint * finalSize * s.scale; o.Color = s.baseColor; float4 fp = float4( finalPos.x + ( v.Position.x * finalSize.x * s.scale.x), finalPos.y + (-v.Position.y * finalSize.y * s.scale.y), v.Position.z, 1.0 ); o.Position = fp; o.UV = float2(1 - v.UV.x, v.UV.y); o.pixelPosition = (v.Position.xy - s.anchorPoint) / 2 * s.imageSize; o.pixelPosition.y = s.imageSize.y - o.pixelPosition.y; o.Instance = v.Instance; return o; }