Files
2025-05-07 15:07:44 +08:00

48 lines
1.2 KiB
HLSL

// Shapes © Freya Holmér - https://twitter.com/FreyaHolmer/
// Website & Documentation - https://acegikmo.com/shapes/
#include "UnityCG.cginc"
#include "../Shapes.cginc"
#pragma target 3.0
// no instancing for textures anyway
sampler2D _MainTex;
half4 _Color;
half4 _Rect; // xy = pos, zw = size
half4 _Uvs; // xy = pos, zw = size
struct VertexInput {
float4 vertex : POSITION;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput {
float4 pos : SV_POSITION;
half2 uv : TEXCOORD1;
UNITY_FOG_COORDS(2)
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
inline half2 UvToRect(half2 uv01, half4 rect) {
return rect.xy + uv01*rect.zw;
}
VertexOutput vert(VertexInput v) {
UNITY_SETUP_INSTANCE_ID(v);
VertexOutput o = (VertexOutput)0;
UNITY_TRANSFER_INSTANCE_ID(v, o);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
half2 uv01 = v.vertex.xy*0.5+0.5;
o.uv = UvToRect( uv01, _Uvs );
v.vertex.xy = UvToRect( uv01, _Rect );
o.pos = UnityObjectToClipPos(v.vertex);
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
FRAG_OUTPUT_V4 frag(VertexOutput i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
half4 shape_color = tex2D(_MainTex, i.uv) * _Color;
return SHAPES_OUTPUT(shape_color, 1, i);
}