91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /******************************************************************************/
 | |
| /*
 | |
|   Project   - MudBun
 | |
|   Publisher - Long Bunny Labs
 | |
|               http://LongBunnyLabs.com
 | |
|   Author    - Ming-Lun "Allen" Chou
 | |
|               http://AllenChou.net
 | |
| */
 | |
| /******************************************************************************/
 | |
| 
 | |
| Shader "MudBun/Mud Splat Single-Textured (Built-In RP)"
 | |
| {
 | |
|   Properties
 | |
|   {
 | |
|     _MainTex("Albedo", 2D) = "white" {}
 | |
|     _AlphaCutoutThreshold("Alpha Cutout Threshold", Range(0.0, 1.0)) = 0.5
 | |
|     _Dithering("Dithering", Range(0.0, 1.0)) = 0.0
 | |
|     _DitherTexture("Dither Texture", 2D) = "black"
 | |
|     _DitherTextureSize("Dither TextureSize", Int) = 256
 | |
|     [Toggle] _RandomDither("Random Dither", Int) = 0
 | |
|   }
 | |
|   SubShader
 | |
|   {
 | |
|     ZWrite On
 | |
|     Cull Back
 | |
|     Tags { "Queue" = "Geometry" "RenderType" = "Opaque" }
 | |
| 
 | |
|     CGPROGRAM
 | |
| 
 | |
|     #define MUDBUN_BUILT_IN_RP
 | |
|     #pragma multi_compile_instancing
 | |
|     #pragma multi_compile _ MUDBUN_PROCEDURAL
 | |
|     #pragma multi_compile _ MUDBUN_QUAD_SPLATS
 | |
|     #pragma surface surf Standard vertex:vert addshadow fullforwardshadows
 | |
|     #pragma target 3.5
 | |
| 
 | |
|     #include "UnityCG.cginc"
 | |
| 
 | |
|     #include "../../../Shader/Render/ShaderCommon.cginc"
 | |
| 
 | |
|     #if MUDBUN_VALID
 | |
|       #include "../../../Shader/Render/SplatCommon.cginc"
 | |
|     #endif
 | |
| 
 | |
|     void vert(inout Vertex i, out Input o)
 | |
|     {
 | |
|       UNITY_INITIALIZE_OUTPUT(Input, o);
 | |
| 
 | |
|       #if MUDBUN_VALID
 | |
|         float3 tangentWs;
 | |
|         float3 tangentLs;
 | |
|         float3 centerWs;
 | |
|         float3 centerLs;
 | |
|         float sdfValue;
 | |
|         float3 normal2dLs;
 | |
|         float3 normal2dWs;
 | |
|         mudbun_splat_vert(i.id, i.vertex, o.localPos, i.normal, o.localNorm, tangentWs, tangentLs, centerWs, centerLs, i.color, o.emissionHash, o.metallicSmoothness, o.tex, o.texWeight, sdfValue, normal2dLs, normal2dWs);
 | |
|         i.tangent = float4(tangentWs, 0.0f);
 | |
|       #endif
 | |
|     }
 | |
| 
 | |
|     void surf(Input i, inout SurfaceOutputStandard o)
 | |
|     {
 | |
|       #ifndef MUDBUN_QUAD_SPLATS
 | |
|         clip(0.5f - length(i.tex));
 | |
|       #endif
 | |
| 
 | |
|       float2 uv = i.tex + 0.5f;
 | |
|       i.texWeight.x += 0.01f;
 | |
| 
 | |
|       float4 color = tex2D(_MainTex, TRANSFORM_TEX(uv, _MainTex));
 | |
| 
 | |
|       float3 albedo = i.color.rgb * _Color.rgb * color.rgb;
 | |
|       float alpha = i.color.a * _Color.a * color.a;
 | |
|       float alphaThreshold;
 | |
|       float2 screenPos = i.screenPos.xy * _ScreenParams.xy / (i.screenPos.w + kEpsilon);
 | |
|       computeOpaqueTransparency(screenPos, i.localPos, i.emissionHash.a, _DitherTexture, _DitherTextureSize, _RandomDither > 0, _AlphaCutoutThreshold, _Dithering, alpha, alphaThreshold);
 | |
|       clip(alpha - alphaThreshold);
 | |
| 
 | |
|       o.Albedo = albedo;
 | |
|       o.Emission = float4(i.emissionHash.rgb, 1.0f) * _Emission;
 | |
|       o.Metallic = i.metallicSmoothness.x * _Metallic;
 | |
|       o.Smoothness = i.metallicSmoothness.y * _Smoothness;
 | |
|     }
 | |
| 
 | |
|     ENDCG
 | |
|   }
 | |
| 
 | |
|   CustomEditor "MudBun.MudSplatSingleTexturedMaterialEditor"
 | |
| }
 | 
