【猫猫的Unity Shader之旅】之玻璃材质

本文介绍如何使用Unity Shader实现逼真的玻璃材质,包括透明效果、反射和菲涅尔效果的实现。

  今天我们用学过的Shader知识实现一个简单的玻璃材质。

首先,玻璃是半透明的

  玻璃最主要的特点就是它是透明的,不同的玻璃有不同的不透明度,水杯的透明度比较低,而装药品的棕色玻璃瓶不透明度就比较高。当然,玻璃也有一定的颜色。利用透明,我们可以这样实现玻璃材质:

<code class="hljs cs has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">Shader <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Custom/GlassShader"</span> {
    Properties {
        _MainTint(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Main Color"</span>, Color) = (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
        _AlphaVal(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Alpha"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.1</span>
    }
    SubShader {
        Tags { <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Queue"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"IgnoreProjector"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"True"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"RenderType"</span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> }
        LOD <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>

        CGPROGRAM
        <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="box-sizing: border-box;">pragma</span> surface surf BlinnPhong alpha</span>

        fixed4 _MainTint;
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">float</span> _AlphaVal;

        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> Input {
            float3 viewDir;
        };

        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = _MainTint.rgb;
            o.Alpha = _AlphaVal;
        }
        ENDCG
    } 
    FallBack <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Diffuse"</span>
}
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>

  此时的效果是这样的,可以看到透明效果,但是它看上去更像两块粗糙的透明的塑料片。

  这里写图片描述

给玻璃增加反射效果

  为了表现这是光滑的玻璃而非塑料,我们增加反射属性,利用天空盒实现简单的反射效果,此时的代码是这样的:

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">Shader <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Custom/GlassShader"</span> {
    Properties {
        _MainTint(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Main Color"</span>, Color) = (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
        _AlphaVal(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Alpha"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.1</span>
        _CubeMap(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Sky Box"</span>, CUBE) = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>{}
        _ReflPower(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Reflect Power"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
    }
    SubShader {
        Tags { <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Queue"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"IgnoreProjector"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"True"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"RenderType"</span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> }
        LOD <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>

        CGPROGRAM
        <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#pragma surface surf BlinnPhong alpha</span>

        fixed4 _MainTint<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        float _AlphaVal<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        samplerCUBE _CubeMap<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        float _ReflPower<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>

        struct Input {
            float3 worldRefl<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            float3 viewDir<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        }<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>

        void surf (Input <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IN</span>, inout SurfaceOutput o) {
            half4 s = texCUBE(_CubeMap, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IN</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.worldRefl</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Albedo</span> = _MainTint<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.rgb</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Emission</span> = s<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.rgb</span> * _ReflPower<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Alpha</span> = _AlphaVal<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        }
        ENDCG
    } 
    FallBack <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Diffuse"</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li></ul>

  这时候玻璃就有了反射效果,尤其是当我们从不同角度看的时候,会看到玻璃反射了场景中的景象,当然这其实是假的,那来自我们指定的天空盒。

  这里写图片描述

给玻璃增加菲涅尔效果

  曾经说到过菲涅尔菲先生的效果非常不错,可以根据视角控制反射的强弱。我们的玻璃当然也可以应用这种效果:

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">Shader <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Custom/GlassShader"</span> {
    Properties {
        _MainTint(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Main Color"</span>, Color) = (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
        _AlphaVal(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Alpha"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.1</span>
        _CubeMap(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Sky Box"</span>, CUBE) = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>{}
        _ReflPower(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Reflect Power"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
        _FresnelPower(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Fresnel Power"</span>, Range(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)) = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
    }
    SubShader {
        Tags { <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Queue"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"IgnoreProjector"</span> = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"True"</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"RenderType"</span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Transparent"</span> }
        LOD <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>

        CGPROGRAM
        <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#pragma surface surf BlinnPhong alpha</span>

        fixed4 _MainTint<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        float _AlphaVal<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        samplerCUBE _CubeMap<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        float _ReflPower<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        float _FresnelPower<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>

        struct Input {
            float3 worldRefl<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            float3 viewDir<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        }<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>

        void surf (Input <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IN</span>, inout SurfaceOutput o) {
            float rim = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span> - max(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, dot(o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Normal</span>, normalize(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IN</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.viewDir</span>)))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            rim = pow(rim, _FresnelPower)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            half4 s = texCUBE(_CubeMap, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IN</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.worldRefl</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Albedo</span> = _MainTint<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.rgb</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Emission</span> = s<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.rgb</span> * _ReflPower * rim<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
            o<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Alpha</span> = _AlphaVal<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
        }
        ENDCG
    } 
    FallBack <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Diffuse"</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li></ul>

  下面上本次的最终效果图:

  这里写图片描述


原文链接:http://blog.csdn.net/dbtxdxy/article/details/45302087#t1

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值