双面渲染shader

双面渲染shader


  Shader " DoubleSideShader" {
              Properties {
               //正面5个参数
                    _Color ("Main Color", Color) = (1,1,1,1)
                     _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
                     _Shininess ("Shininess", Range (0.03, 1)) = 0.078125
                     _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
                    _BumpMap ("Normalmap", 2D) = "bump" {}
                //反面拷贝 改名 也是5个
                    _BackColor ("Back Main Color", Color) = (1,1,1,1)
                    _BackSpecColor ("Back Specular Color", Color) = (0.5, 0.5, 0.5, 1)
                    _BackShininess ("Back Shininess", Range (0.03, 1)) = 0.078125
                    _BackMainTex ("Back Base (RGB) Gloss (A)", 2D) = "white" {}
                    _BackBumpMap ("Back Normalmap", 2D) = "bump" {}
                }
                SubShader {
                Tags { "RenderType"="Opaque" }
                    LOD 400
                    Cull back
                //开始渲染正面    
                CGPROGRAM
                //表明是surface渲染方式 主渲染程序是surf 光照模型是BLinnPhong
                #pragma surface surf BlinnPhong  
                
                
               sampler2D _MainTex;
               sampler2D _BumpMap;
                fixed4 _Color;
                half _Shininess;
                
                struct Input {
                    float2 uv_MainTex;
                    float2 uv_BumpMap;
                };
                
                void surf (Input IN, inout SurfaceOutput o) {
                    fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
                   o.Albedo = tex.rgb * _Color.rgb;
                    o.Gloss = tex.a;
                    o.Alpha = tex.a * _Color.a;
                    o.Specular = _Shininess;
                   o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));}
                ENDCG
                
                
                    Cull front
                //开始渲染反面 其实和就是拷贝了一份正面渲染的代码 除了变量名要改    
                CGPROGRAM
             #pragma surface surf BlinnPhong
               
                sampler2D _BackMainTex;
                sampler2D _BackBumpMap;
                fixed4 _BackColor;
                half _BackShininess;
               
                struct Input {
                    float2 uv_BackMainTex;
                    float2 uv_BackBumpMap;
                };
                
                void surf (Input IN, inout SurfaceOutput o) {
                     fixed4 tex = tex2D(_BackMainTex, IN.uv_BackMainTex);
                     o.Albedo = tex.rgb * _BackColor.rgb;
                   o.Gloss = tex.a;
                    o.Alpha = tex.a * _BackColor.a;
                     o.Specular = _BackShininess;
                     o.Normal = UnpackNormal(tex2D(_BackBumpMap, IN.uv_BackBumpMap));}
                 ENDCG
                }
                 FallBack "Specular"
                }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值