53 lines
1.2 KiB
HLSL
53 lines
1.2 KiB
HLSL
|
|
#include "rect_shared.hlsli"
|
|
|
|
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;
|
|
}
|