Прозрачный шейдер не может применить металлик и гладкость - PullRequest
0 голосов
/ 28 января 2019

У меня есть этот шейдер, который должен визуализировать сквозное отверстие человеческого тела, и я использовал прозрачный шейдер, чтобы увидеть модель.Я решил проблему с буфером z-глубины модели, но я не могу применить металлик и гладкость к шейдеру.Любой совет?Большое спасибо.enter image description here Ниже перечислены шейдеры:

![Shader "Custom/test2" {
    Properties{
        _Color("Main Color", Color) = (1,1,1,1)
        _MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
        _Glossiness("Smoothness", Range(0,1)) = 0.5
        _Metallic("Metallic", Range(0,1)) = 0.0
    }
        SubShader{
        Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }

        // extra pass that renders to depth buffer only
        Pass{
        ZWrite On
        ColorMask 0

    }

        // paste in forward rendering passes from Transparent/Diffuse
        UsePass "Transparent/Diffuse/FORWARD"
    }
        Fallback "Transparent/VertexLit"
}][1]

1 Ответ

0 голосов
/ 03 февраля 2019

Ну, например, вы используете проход, который Рассеянный свет только ... Если вам нужен металлик и гладкость, почему бы вам просто не использовать поверхностный шейдер и вставить в свой проход грунтовкитам?

Создать новый шейдер поверхности.Чтобы он поддерживал прозрачность, вам нужно добавить следующие вещи:

Ваши теги должны выглядеть следующим образом:

Tags { "RenderType" = "Transparent" "Queue"="Transparent"}

Добавьте это в начало подшейдера:

ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha

И поверхностная прагма должна включать alpha: fade, например:

#pragma surface surf Standard alpha:fade

Добавьте свой проход праймера внутри SubShader, но перед блоком CGPROGRAM.Внутри функции прибоя установите разные значения, как в обычной функции поверхности.Подробнее о шейдерах можно прочитать здесь: https://docs.unity3d.com/Manual/SL-SurfaceShaders.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...