unity 中的 xray 效果

這個(gè)是在場(chǎng)景中Quad的Shader

Shader "Custom/XRay"
{
    SubShader
    {
        Tags { "Queue"="Transparent+1" }
        Pass { Blend Zero One}
    }
    FallBack "Diffuse"
}

這個(gè)是可供xray看見(jiàn)里面的外表的Cube

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MakeSeeThrough : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        GetComponent<Renderer>().material.renderQueue = 3002;
    }
}

場(chǎng)景中離相機(jī)近的是Quad ,Cube 較遠(yuǎn)
Cube 里面有一個(gè)Sphere
在拖動(dòng)Quad的時(shí)候,Quad里能顯示Sphere 而不顯示Cube

效果


img_v3_02kg_52092cf3-fbf7-4d22-9f97-7bab5231db5g.gif

原理

讓我們逐步分析渲染流程,解釋為什么拖動(dòng) Quad 時(shí)可以看到 Cube 內(nèi)部的 Sphere:

(1) 正常情況下(沒(méi)有 Quad)
Cube:
使用 Custom/XRay Shader,渲染隊(duì)列為 Transparent+1 (3001)。
渲染時(shí),Cube 不會(huì)顯示顏色(因?yàn)?Blend Zero One),但會(huì)寫(xiě)入深度緩沖。
Sphere:
由于 Cube 不會(huì)顯示顏色,Sphere 的顏色會(huì)透過(guò) Cube 顯示出來(lái)。

(2) 使用 Quad 并拖動(dòng)時(shí)
Quad:
使用 MakeSeeThrough 腳本,渲染隊(duì)列為 3002。
由于 Quad 的渲染隊(duì)列比 Cube 高,它會(huì)在 Cube 之后渲染。
渲染順序:
Cube:
使用 Custom/XRay Shader,渲染隊(duì)列為 3001。
渲染時(shí),Cube 不會(huì)顯示顏色(因?yàn)?Blend Zero One),但會(huì)寫(xiě)入深度緩沖。
Quad:
使用 MakeSeeThrough 腳本,渲染隊(duì)列為 3002。
渲染時(shí),Quad 會(huì)通過(guò)深度測(cè)試,并顯示在 Cube 的后面。

Sphere:
Sphere 的渲染隊(duì)列為默認(rèn)值(Geometry,2000),它會(huì)在 Cube 和 Quad 之前渲染。
由于 Cube 不會(huì)顯示顏色,Sphere 的顏色會(huì)透過(guò) Cube 顯示出來(lái)。

(3) 為什么拖動(dòng) Quad 時(shí)會(huì)顯示 Sphere
Quad 的作用:
Quad 的渲染隊(duì)列為 3002,確保它在 Cube 之后渲染。
由于 Cube 不會(huì)顯示顏色,Sphere 的顏色會(huì)透過(guò) Cube 顯示出來(lái)。
當(dāng) Quad 渲染時(shí),它會(huì)通過(guò)深度測(cè)試,并顯示在 Cube 的后面。

透視效果:
由于 Quad 不會(huì)顯示顏色,Sphere 的顏色會(huì)透過(guò) Quad 顯示出來(lái)。
拖動(dòng) Quad 時(shí),Quad 的位置和角度會(huì)改變,從而影響 Sphere 的可見(jiàn)區(qū)域。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容