ユニティ5のステンシルシェイダー(バージョン2017.1.1)で作業を開始しました。トップダウンゲームで視線マスクを作成しようとしています。キャラクターの視界を遮っていません)私はこの問題に関するYouTubeチュートリアル(https://www.youtube.com/watch?v=xkcCWqifT9M&t=185s)に従っていましたが、彼と全く同じコードを使用していたにもかかわらず、私のプロジェクトがうまく動作しませんでした。ユニティシェイダーステンシルの問題
私はシェーダの一部は、シェーダが画面
に私の表示方法に影響を持っているように見えるZTEST、ColorMaskとステンシルコマンドやステンシル内のステートメントのなしの多くを含む、さまざまな値を変更しようとしました2つのシェーダがあります:1つは、プレーヤーが見ることができるものを表すメッシュに適用されます 2つ目は、プレーヤーの視線メッシュで覆われるまで非表示にされるオブジェクトに適用されます これはラインに適用される最初のシェーダです視野メッシュ
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
}
//このシェーダのこのポイント以降のものはすべて標準のユニティシェーダですが、私は全く編集していません
//最初のシェーダで公開されるオブジェクトには2番目のシェーダが適用されます:
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
}
私は任意のヘルプは非常に高く評価されるだろうシェーダに新しいブランドだけど、私はまた、個人的な団結を使用していますが、ステンシルシェーダはユニティProの機能やない
ヘルプメイトに感謝!私はそれを非延伸レンダリングパスでステンシルに強制する方法を知っていますか? –
私はあなたのコードを使用して(いくつかの基本的な標準とアンライドシェイダーにコピーを貼り付けます)、それは期待通りに機能します。 StencilMask.shaderで 'ZWrite Off':大文字でO ' #pragma surface surf StencilObject.shaderの標準フルフォワードシャドウaddshadow ':シャドーに** addshadow **を追加する必要がありました正しく動作する –
また、遅延レンダリングモードで正常に動作しなくなります。 –