69 lines
1.6 KiB
Plaintext
69 lines
1.6 KiB
Plaintext
Shader "Hidden/ftShowPreview"
|
|
{
|
|
Properties
|
|
{
|
|
_MainTex ("Texture", 2D) = "white" {}
|
|
}
|
|
|
|
SubShader {
|
|
|
|
Tags { "RenderType"="Opaque" }
|
|
LOD 200
|
|
|
|
CGPROGRAM
|
|
// Physically based Standard lighting model, and enable shadows on all light types
|
|
#pragma surface surf Standard vertex:vert noinstancing noshadow noforwardadd noambient
|
|
|
|
sampler2D _ftPreviewTexture;
|
|
float4x4 _ftPreviewViewProj;
|
|
|
|
struct Input
|
|
{
|
|
float4 projUV;
|
|
};
|
|
|
|
struct vinput
|
|
{
|
|
float4 vertex : POSITION;
|
|
|
|
// needed for Unity
|
|
float2 texcoord1 : TEXCOORD1;
|
|
float2 texcoord2 : TEXCOORD2;
|
|
float3 normal : NORMAL0;
|
|
float2 texcoord : TEXCOORD0;
|
|
float4 tangent : TANGENT;
|
|
};
|
|
|
|
void vert (inout vinput v, out Input o)
|
|
{
|
|
UNITY_INITIALIZE_OUTPUT(Input,o);
|
|
|
|
float4 worldPos = mul(unity_ObjectToWorld, v.vertex);
|
|
o.projUV = mul(_ftPreviewViewProj, worldPos);
|
|
}
|
|
|
|
void surf (Input IN, inout SurfaceOutputStandard o) {
|
|
o.Albedo = 0;
|
|
o.Smoothness = 0;
|
|
o.Occlusion = 0;
|
|
o.Metallic = 1;
|
|
|
|
float4 color = 0;
|
|
float2 uv = IN.projUV.xy / IN.projUV.w;
|
|
if (uv.x < -1 || uv.x > 1 || uv.y < -1 || uv.y > 1)
|
|
{
|
|
color = 0;
|
|
}
|
|
else
|
|
{
|
|
color = tex2D(_ftPreviewTexture, uv * 0.5 + 0.5);
|
|
}
|
|
|
|
o.Emission = color;
|
|
}
|
|
ENDCG
|
|
}
|
|
FallBack "Diffuse"
|
|
}
|
|
|