zoukankan      html  css  js  c++  java
  • 关于Unity实现三维物体裁剪功能

    将下面的Shader代码粘到工程中

     1 Shader "Mocha/Clip"
     2 {
     3     Properties{
     4         _Color("Color",Color)=(1,1,1,1)
     5         _P("p",Range(-0.5,0.51))=0
     6     }
     7     SubShader{
     8         Pass{
     9             Cull OFF
    10             CGPROGRAM
    11             #pragma vertex vert
    12             #pragma fragment frag
    13             #include "UnityCG.cginc"
    14 
    15             float4 _Color;
    16             float _P;
    17 
    18             struct a2v{
    19                 float4 vertex:POSITION;
    20                 float4 texcoord:TEXCOORD0;
    21             };
    22             struct v2f{
    23                 float4 pos:POSITION;
    24                 float4 uv:TEXCOORD0;
    25             };
    26 
    27             v2f vert(a2v v){
    28                 v2f o;
    29                 o.uv = v.vertex;
    30                // o.pos=UnityObjectToClipPos(v.vertex);    //Unity5.6之前版本用
    31                 o.pos=mul(UNITY_MATRIX_MVP, v.vertex);    //Unity5.6之后版本用
    32                 return o;
    33             }
    34 
    35             fixed4 frag(v2f i):COLOR{
    36                 if(i.uv.y<_P){
    37                     discard;
    38                 }
    39                 return _Color;
    40             }
    41 
    42             ENDCG
    43         }
    44     }
    45 }

    新建材质并选择如下参数:

    通过控制下图中的“P”值进行剪裁控制,可根据需要调整“P”值大小

  • 相关阅读:
    Codeforces 1354C2
    Codeforces 1354C1
    Codeforces 1355C
    Codeforces 1353D
    Codeforces 1352
    Codeforces 1351C
    Codeforces 1344B/1345D
    Codeforces 1342D
    Codeforces 1340B/1341D
    Codeforces 1343D
  • 原文地址:https://www.cnblogs.com/mrmocha/p/9854894.html
Copyright © 2011-2022 走看看