zoukankan      html  css  js  c++  java
  • 如何让模型产生双面法线效果

    在Unity的內建shader中,預設的顯像方式是 "Back-Face Culling",也就是背面是看不見的,如果需要呈現雙面法線時,我們可以透過修改Shader來達到正反面都顯示的效果。

    1.預設的顯示模式,反面是看不見的。

    
    TwoSideNormal-1.png



    2.新增一個自訂shader文件。

    
    TwoSideNormal-2.png



    3.以內建的Diffuse為例,修改其中的Pass函数,增加一行 "Cull Off"。

    
    TwoSideNormal-3.png



    4.新增一個材質球並套用修改過的shader,即可達到雙面顯像的效果。

    
    TwoSideNormal-4.png 
    Shader "DoubleSided" { 
       Properties { 
          _Color ("Main Color", Color) = (1,1,1,1) 
          _MainTex ("Base (RGB)", 2D) = "white" {} 
          //_BumpMap ("Bump (RGB) Illumin (A)", 2D) = "bump" {} 
       } 
       SubShader {       
          //UsePass "Self-Illumin/VertexLit/BASE" 
          //UsePass "Bumped Diffuse/PPL" 
           
          // Ambient pass 
          Pass { 
          Name "BASE" 
          Tags {"LightMode" = "PixelOrNone"} 
          Color [_PPLAmbient] 
          SetTexture [_BumpMap] { 
             constantColor (.5,.5,.5) 
             combine constant lerp (texture) previous 
             } 
          SetTexture [_MainTex] { 
             constantColor [_Color] 
             Combine texture * previous DOUBLE, texture*constant 
             } 
          } 
        
       // Vertex lights 
       Pass { 
          Name "BASE" 
          Tags {"LightMode" = "Vertex"} 
          Material { 
             Diffuse [_Color] 
             Emission [_PPLAmbient] 
             Shininess [_Shininess] 
             Specular [_SpecColor] 
             } 
          SeparateSpecular On 
          Lighting On 
          Cull Off 
          SetTexture [_BumpMap] { 
             constantColor (.5,.5,.5) 
             combine constant lerp (texture) previous 
             } 
          SetTexture [_MainTex] { 
             Combine texture * previous DOUBLE, texture*primary 
             } 
          } 
       } 
       FallBack "Diffuse", 1 
    }
    
    
  • 相关阅读:
    并发编程 进程
    计算机的发展史和操作系统简介
    subprocess和struct模块
    socket编程
    面向对象进阶 反射
    类的内置方法
    常用模块(hashlib,configparser,logging)

    面向对象封装 classmethod和staticmethod方法
    面向对象 继承补充和多态
  • 原文地址:https://www.cnblogs.com/lm3515/p/1814776.html
Copyright © 2011-2022 走看看