【问题标题】:Shader that renders transparent instead of a color渲染透明而不是颜色的着色器
【发布时间】:2017-07-07 15:10:23
【问题描述】:

我对着色器完全陌生,我从来没有做过

我想知道是否有可能有一个着色器可以正常渲染无光照纹理,但特定颜色除外,它应该渲染为透明

有点像绿屏,我想让着色器渲染 rgba(0,0,0,0) 而不是 rgba(0,1,0,1)

我知道我可以只使用带有 alpha 的纹理,但我需要将它用于移动设备上的视频纹理,所以我认为这是唯一的选择

提前感谢您提供的任何提示或答案

【问题讨论】:

    标签: unity3d shader


    【解决方案1】:

    您正在寻找色度键着色器。

    this Unity forum thread 中有一些详细信息,我认为这个可以满足您的要求,尽管另一种解决方案可能会“更好”,具体取决于您可以对视频源执行的操作等。给线程一个如果可以,请阅读。

    Shader "Matte/RGB Color"
    {
    
    Properties {
       _MainTex ("Base (RGB)", 2D) = "white" {}
       _Matte ("Matte Color", Color) = (1,0,1,1)
       _Thresh ("Threshold", Range (0,1)) = 0.0
       _Cutoff ("Cutoff", Range (0,1)) = .5
    }
    
    SubShader {
    
       Pass {
          AlphaTest Less [_Cutoff]
    CGPROGRAM
    #pragma fragment frag
    #include "UnityCG.cginc"
    
    struct v2f {
        float4 pos : POSITION;
        float4 uv : TEXCOORD0;
    };
    
    sampler2D _MainTex;
    uniform half4 _Matte;
    uniform float _Thresh;
    uniform float _Cutoff;
    
    half4 frag (v2f i) : COLOR
    {
        //return _Matte;
        half4 color = tex2D(_MainTex, i.uv.xy);
    
        half3 keyMinus = half3( (_Matte.r - _Thresh), (_Matte.g - _Thresh), (_Matte.b - _Thresh) );
        half3 keyPlus = half3( (_Matte.r + _Thresh), (_Matte.g + _Thresh), (_Matte.b + _Thresh) );
    
        if ( ((color.r > keyMinus.r)  (color.r < keyPlus.r))  ((color.g > keyMinus.g)  (color.g < keyPlus.g))  ((color.b > keyMinus.b)  (color.b < keyPlus.b)) )
        {
            return _Cutoff;
        }
    
        return float4(color.rgb, max(0, _Cutoff-0.01));
    }
    
    ENDCG
          } // pass
       } // subshader
       //Fallback "Transparent/Diffuse"
    } // shader
    

    资产商店中还有一些资产,例如 this one ($8),可能会更好,也可能不会。

    【讨论】:

    • 感谢您的提示!在那里找到了很多好东西,但仍然没有一个可以正常工作的着色器。至少我对着色器的工作原理有所了解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多