유니티 셋팅
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
Shader "MesshingAround/Stylized_Tint (Built-in)"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Header(Color)]
|
||||
[Space(5)]
|
||||
[NoScaleOffset]_GradientTexture("GradientTexture(LUT)", 2D) = "white" {}
|
||||
_GradientIndex("GradientIndex", Float) = 48
|
||||
_GradientCount("GradientCount", Float) = 110
|
||||
|
||||
[Header(Emission)]
|
||||
[Space(5)]
|
||||
_EmissionColor("EmissionColor", Color) = (0, 0, 0, 0)
|
||||
_EmissionStrength("EmissionStrength", Float) = 0
|
||||
|
||||
[Header(Glossy)]
|
||||
[Space(5)]
|
||||
_Smoothness("Smoothness(Glossy)", Range(0, 1)) = 0
|
||||
|
||||
[HideInInspector] _GrayscaleTex("GrayscaleTex", 2D) = "white" {}
|
||||
[HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
|
||||
[HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
|
||||
[HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Opaque"
|
||||
"Queue" = "Geometry"
|
||||
}
|
||||
LOD 200
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf StandardSpecular fullforwardshadows
|
||||
#pragma target 3.0
|
||||
#pragma multi_compile_instancing
|
||||
|
||||
sampler2D _GrayscaleTex;
|
||||
sampler2D _GradientTexture;
|
||||
|
||||
UNITY_INSTANCING_BUFFER_START(Props)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float, _GradientIndex)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float, _GradientCount)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float4, _EmissionColor)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float, _EmissionStrength)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float, _Smoothness)
|
||||
UNITY_INSTANCING_BUFFER_END(Props)
|
||||
|
||||
struct Input
|
||||
{
|
||||
float2 uv_GrayscaleTex;
|
||||
};
|
||||
|
||||
// LUT sampling function - MATCHES URP EXACTLY
|
||||
// Uses grayscale.r as U coordinate and calculated V from gradient index
|
||||
float4 SampleLUTFromGrayscale(float2 uv, float gradientIndex, float gradientCount)
|
||||
{
|
||||
// Round the gradient index and add 0.5 (URP does this)
|
||||
float roundedIndex = round(gradientIndex);
|
||||
float adjustedIndex = roundedIndex + 0.5;
|
||||
|
||||
// Calculate V coordinate
|
||||
float vCoord = adjustedIndex / gradientCount;
|
||||
|
||||
// Sample grayscale texture
|
||||
float4 grayscaleSample = tex2D(_GrayscaleTex, uv);
|
||||
|
||||
// Use R channel as U coordinate (like URP)
|
||||
float2 lutUV = float2(grayscaleSample.r, vCoord);
|
||||
|
||||
return tex2D(_GradientTexture, lutUV);
|
||||
}
|
||||
|
||||
void surf(Input IN, inout SurfaceOutputStandardSpecular o)
|
||||
{
|
||||
// Get instanced properties
|
||||
float gradientIndex = UNITY_ACCESS_INSTANCED_PROP(Props, _GradientIndex);
|
||||
float gradientCount = UNITY_ACCESS_INSTANCED_PROP(Props, _GradientCount);
|
||||
float4 emissionColor = UNITY_ACCESS_INSTANCED_PROP(Props, _EmissionColor);
|
||||
float emissionStrength = UNITY_ACCESS_INSTANCED_PROP(Props, _EmissionStrength);
|
||||
float smoothness = UNITY_ACCESS_INSTANCED_PROP(Props, _Smoothness);
|
||||
|
||||
// Sample LUT using grayscale texture (set by PotionTextureSetup.cs)
|
||||
float4 lutColor = SampleLUTFromGrayscale(IN.uv_GrayscaleTex, gradientIndex, gradientCount);
|
||||
|
||||
// Set surface properties
|
||||
o.Albedo = lutColor.rgb;
|
||||
o.Emission = emissionColor.rgb * emissionStrength;
|
||||
o.Smoothness = smoothness;
|
||||
o.Specular = float3(0, 0, 0);
|
||||
o.Alpha = 1.0;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
FallBack "Standard"
|
||||
}
|
||||
Reference in New Issue
Block a user