日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Unity Shader】 Alpha测试

發(fā)布時(shí)間:2023/12/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity Shader】 Alpha测试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹

Alpha測(cè)試:符合條件的像素顯示出來(lái),不符合的丟掉

一、fixed function shader的透明通度測(cè)試

ShaderLab: Legacy Alpha Testing

語(yǔ)法
  • 關(guān)閉Alpha測(cè)試
  • AlphaTest Off

    渲染所有的像素(默認(rèn))或者…
    2. 開(kāi)啟Alpha測(cè)試

    AlphaTest comparison AlphaValue

    設(shè)置alpha測(cè)試,根據(jù)alpha值篩選符合條件的像素進(jìn)行渲染

  • Comparison Alpha測(cè)試的比較命令

    • Greater
      Only render pixels whose alpha is greater than AlphaValue.
    • GEqual
      Only render pixels whose alpha is greater than or equal to AlphaValue.
    • Less
      Only render pixels whose alpha value is less than AlphaValue.
    • LEqual
      Only render pixels whose alpha value is less than or equal to from AlphaValue.
    • Equal
      Only render pixels whose alpha value equals AlphaValue.
    • NotEqual
      Only render pixels whose alpha value differs from AlphaValue.
    • Always
      Render all pixels. This is functionally equivalent to AlphaTest Off.
    • Never
      Don’t render any pixels.
  • 開(kāi)啟alpha測(cè)試,只渲染alpha值大于0.5的像素:

    Shader "Hidden/alphatest" {Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{// No culling or depthCull Off ZWrite Off ZTest Always// alphatest// AlphaTest OffAlphaTest Greater 0.5Pass{SetTexture[_MainTex]}} }

    二、可編程shader的透明度測(cè)試

    ShaLab的AlphaTest命令在shader2.0中是不起作用的。
    由于可編程shader會(huì)對(duì)紋理采樣,可以直接操作紋理的透明通道值,因此也不需要AlphaTest命令。而fixed function shader不會(huì)紋理采樣,只能依靠AlphaTest命令進(jìn)行Alpha測(cè)試。

    同樣,開(kāi)啟alpha測(cè)試,只渲染alpha值大于0.5的像素:

    Shader "Hidden/alphatest2" {Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{// No culling or depth//Cull Off ZWrite Off ZTest AlwaysBlend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);if(col.a < 0.5 ){return fixed4(0,0,0,0);}else{return col;}return col;}ENDCG}} }

    總結(jié)

    以上是生活随笔為你收集整理的【Unity Shader】 Alpha测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。