Camera.main.SetReplacementShader()

作者:追风剑情 发布于:2017-8-5 16:39 分类:Shader

替换前

22222.png11111.png

替换后

3333.png

示例: Unity5.5


  1. using System.Collections.Generic;
  2. using UnityEngine;
  3.  
  4. public class TestShader : MonoBehaviour {
  5.  
  6. void Start () {
  7. //SetReplacementShader(): 永久替换
  8. //RenderWithShader(): 仅替换当前帧渲染
  9. Camera.main.SetReplacementShader(Shader.Find("Custom/ReplacementShader3"), "RenderType");
  10. }
  11. }


替换前使用的Shader


  1. Shader "Custom/ReplacementShader1" {
  2. Properties {
  3. _Color ("Main Color", Color) = (1,1,1,0)
  4. _SpecColor ("Spec Color", Color) = (1,1,1,1)
  5. _Emission ("Emmisive Color", Color) = (0,0,0,0)
  6. _Shininess ("Shininess", Range (0.01, 1)) = 0.7
  7. _MainTex ("Base (RGB)", 2D) = "white" {}
  8. }
  9. SubShader {
  10. Tags {"Queue"="Geometry" "RenderType"="MyTag" "PreviewType"="Plane"}
  11. Pass {
  12. Material {
  13. //漫反射颜色
  14. Diffuse [_Color]
  15. //环境光颜色
  16. Ambient [_Color]
  17. //亮度
  18. Shininess [_Shininess]
  19. //高光颜色
  20. Specular [_SpecColor]
  21. //自发光颜色
  22. Emission [_Emission]
  23. }
  24. //开启光照
  25. Lighting On
  26. //开启高光
  27. SeparateSpecular On
  28. //混合纹理
  29. SetTexture [_MainTex] {
  30. //纹理混合模式参见: https://docs.unity3d.com/Manual/SL-SetTexture.html
  31. //主纹理rgb * 光照颜色rgb 2倍亮度, 主纹理alpha * 光照颜色的alpha
  32. Combine texture * primary DOUBLE, texture * primary
  33.  
  34. //Quad: 4倍亮度
  35. //Combine texture * primary Quad, texture * primary
  36. }
  37. }
  38. }
  39. }


替换后使用的Shader


  1. Shader "Custom/ReplacementShader3" {
  2. Properties
  3. {
  4. }
  5. SubShader
  6. {
  7. Tags {"RenderType" = "MyTag"}
  8. Pass
  9. {
  10. CGPROGRAM
  11. #pragma vertex vert
  12. #pragma fragment frag
  13.  
  14. float4 vert (float4 vertex : POSITION) : SV_POSITION
  15. {
  16. return mul(UNITY_MATRIX_MVP, vertex);
  17. }
  18.  
  19. fixed4 frag () : SV_Target
  20. {
  21. return fixed4(0,1,0,1);//返回绿色
  22. }
  23. ENDCG
  24. }
  25. }
  26. }


注意:"RenderType"="MyTag"匹配上才会替换,否则物体将不被Camera渲染。

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号