Unity ShaderLab-如何在另一个着色器通道中使用由着色器创建的纹理?

时间:2019-12-17 22:13:25

标签: unity3d glsl shader

我有一个自定义的不发光着色器,可以使对象从相机到达的距离越远,将对象淡化为透明的,并在alpha达到某个阈值时进行裁剪。 着色器效果很好,但是除了淡入淡出之外,我还需要标准着色器的其余功能。

当我在标准表面着色器之前尝试使用UsePass时,淡入淡出的效果完全消失了。如果之后执行此操作,则渐变着色器将像您期望的那样在顶部绘制。我还没有弄清楚如何使其与自定义的标准着色器一起使用(直接使用从Unity下载的文件)。

我尝试过的例子:

在冲浪着色器之前使用我的淡入淡出效果-刚被绘制过,下面失去了透明度

Shader "Custom/DistanceFader"
{
  Properties
  {
    [...]
    _FadeDistance("FadeDistance", Float) = 50
    _FadeLength("FadeLength", Float) = 30
  }
  SubShader
  {
    Tags { "RenderType"="Opaque" }
    LOD 200

    UsePass "Unlit/Custom/TestShader/TESTPASS"

    GrabPass {
        "_MainTex"
    }
    [...]

在冲浪着色器之后使用淡入淡出-绘制冲浪通道,因此最后没有透明的物体。

Shader "Custom/DistanceFader"
{
  Properties
  {
    [...]
    _FadeDistance("FadeDistance", Float) = 50
    _FadeLength("FadeLength", Float) = 30
  }
  SubShader
  {
    Tags { "RenderType"="Opaque" }
    LOD 200

    [...]

    surf { [...] }

    [...]

    GrabPass {
        "_MainTex"
    }

    UsePass "Unlit/Custom/TestShader/TESTPASS"

如何获得已创建的标准表面着色器的所有效果,又如何应用淡入淡出效果?

0 个答案:

没有答案