Ich habe vor kurzem begonnen mit dem Stencil Shader auf Unity 5 (Version 2017.1.1) zu arbeiten. Ich versuche eine Sichtlinienmaske in einem Top-Down-Spiel zu erstellen (dh der Spieler kann nur was sehen Blockiert nicht die Ansicht ihres Charakters) Ich habe ein YouTube-Tutorial zu diesem Thema verfolgt (https://www.youtube.com/watch?v=xkcCWqifT9M&t=185s), aber trotz der Verwendung desselben Codes konnte ich mein Projekt nicht zum Laufen bringen.Unity Shader Stencil Ausgabe
Ich habe versucht, verschiedene Werte einschließlich GTEST, ColorMask und viele der Schablonenbefehle und keine der Aussagen in der Stencil Teil des Shader zu verändern scheinen keine Wirkung zu haben, wie die Shader auf dem Bildschirm erscheint
I 2 Shader: Einer wird auf ein Mesh angewendet, das darstellt, was der Spieler sehen kann und der zweite wird auf Objekte angewendet, die bis zum Sichtliniennetz des Spielers verdeckt werden sollen Dies ist der erste Shader, der auf die Linie angewendet wird Sichtmasche
Shader "Custom/StencilMask" {
Properties {
_Color ("Color", Color) = (1,1,1,0.2)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader {
Tags {"Queue"="Geometry-100" "RenderType"="Opaque"}
LOD 200
ColorMask 0
ZWrite off
Stencil {
Ref 1
Pass replace
}
// Alles was nach diesem Punkt in diesem Shader ist, ist der Standard-Unity-Shader, ich habe ihn überhaupt nicht bearbeitet
// Der zweite Shader wird auf Objekte angewendet, die vom ersten Shader enthüllt werden sollen:
Shader "Custom/StencilObject" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader {
Tags { "RenderType"="Opaque" "Queue"="Geometry+10" }
LOD 200
Stencil{
Ref 1
Comp equal
}
ich bin ganz neu zu Shaders so wäre jede Hilfe sehr geschätzt werden, verwende ich auch Einheit persönlich, aber ich weiß nicht, ob Schablone Shaders eine Unity Pro-Funktion ist oder nicht
danke für die Hilfe mate! Weißt du, wie ich es in einem nicht verzögerten Rendering-Pfad zur Schablone zwingen kann? –
Ich habe deinen Code benutzt (kopiere ihn in einige Standard und Unlit Shader) und es funktioniert wie erwartet. Allerdings achten Sie auf diese Details: 'ZWrite Off' in StencilMask.shader: hat eine Hauptstadt O ' #pragma Oberflächenbrandung Standard fullforwardshadows addShad 'in StencilObject.shader: Ich musste hinzufügen ** addshadow ** für Schatten zu Verhalten Sie sich ordnungsgemäß –
Außerdem funktioniert es nicht mehr im verzögerten Rendering-Modus wie erwartet :) –