FLOW_Solid.surfshader 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. BEGIN_OPTIONS
  2. END_OPTIONS
  3. BEGIN_PROPERTIES
  4. [NoScaleOffset]_MainTex("Albedo (RGB) Alpha (A)", 2D) = "white" {}
  5. [NoScaleOffset][Normal]_BumpMap("Normal (RGBA)", 2D) = "bump" {}
  6. [NoScaleOffset]_MetallicGlossMap("Metallic (R) Occlusion (G) Smoothness (B)", 2D) = "white" {}
  7. [NoScaleOffset]_EmissionMap("Emission (RGB)", 2D) = "white" {}
  8. _Color("Color", Color) = (1,1,1,1)
  9. _BumpScale("Normal Map Strength", Range(0,5)) = 1
  10. _Metallic("Metallic", Range(0,1)) = 0
  11. _GlossMapScale("Smoothness", Range(0,1)) = 1
  12. _Emission("Emission", Color) = (0,0,0)
  13. _Tiling("Tiling", Float) = 1.0
  14. END_PROPERTIES
  15. BEGIN_CBUFFER
  16. float4 _Color;
  17. float _BumpScale;
  18. float _Metallic;
  19. float _GlossMapScale;
  20. float3 _Emission;
  21. float _Tiling;
  22. END_CBUFFER
  23. BEGIN_CODE
  24. TEXTURE2D(_MainTex);
  25. SAMPLER(sampler_MainTex);
  26. TEXTURE2D(_BumpMap);
  27. SAMPLER(sampler_BumpMap);
  28. TEXTURE2D(_MetallicGlossMap);
  29. SAMPLER(sampler_MetallicGlossMap);
  30. TEXTURE2D(_EmissionMap);
  31. SAMPLER(sampler_EmissionMap);
  32. void SurfaceFunction(inout Surface o, ShaderData d)
  33. {
  34. float2 coord = d.texcoord0.xy * _Tiling;
  35. float4 texMain = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, coord);
  36. float4 gloss = SAMPLE_TEXTURE2D(_MetallicGlossMap, sampler_MetallicGlossMap, coord);
  37. float4 bump = SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, coord);
  38. float4 glow = SAMPLE_TEXTURE2D(_EmissionMap, sampler_EmissionMap, coord);
  39. #if !_SKIP_ALPHA_CLIP
  40. clip(texMain.a * d.vertexColor.a * _Color.a - 0.5f);
  41. #endif
  42. o.Albedo = texMain.rgb * d.vertexColor.rgb * _Color.rgb;
  43. o.Normal = UnpackScaleNormal(bump, _BumpScale);
  44. o.Metallic = gloss.r * _Metallic;
  45. o.Occlusion = gloss.g;
  46. o.Smoothness = gloss.b * _GlossMapScale;
  47. o.Emission = glow.rgb * _Emission;
  48. o.Alpha = texMain.a * d.vertexColor.a * _Color.a;
  49. }
  50. END_CODE