日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Unity Shader】渲染纹理实现镜子效果

發布時間:2024/1/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity Shader】渲染纹理实现镜子效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 基本概念

1.1 什么是渲染到紋理?

全稱是Render To Texture,《入門精要》好像又把渲染目標紋理,即Render Target Texture也叫做RTT,但我認為《入門精要》的RTT更多的是“中間緩沖區”這個緩沖區,而Render To Texture這個RTT更多的是指渲染到紋理這一個操作,為了避免混亂接下來我說的RTT都是指Render To Texture這個渲染操作。

在我們學習渲染過程基礎的時候,一個Camera的渲染結果通常會說“輸出并儲存在顏色緩沖中”,再等待最后出現在屏幕上。當然,這也是常規的渲染操作。至于為什么會是渲染到紋理?有時候渲染會想要實現一些特效,那么此時RTT也像常規渲染操作一樣渲染一個場景,但這次并不是儲存在幀緩沖(雙緩沖則是儲存在后緩沖)中,而是渲染出一張紋理并在之后進行使用。

關于RTT更專業點的敘述:現代圖形處理單元(GPU)允許我們將3D場景先渲染到中間緩沖區中,也就是說不會直接到達默認的幀緩沖或者后緩沖(關于各種緩沖我在【技術美術圖形部分】圖形渲染管線3.0-光柵化和像素處理階段末尾有做簡單的介紹)。

1.2 什么是渲染紋理?

全稱Render Texture,簡稱RT,也就是上述提到的渲染出的那張紋理,這是Unity為渲染目標紋理專門定義的一種紋理類型。

1.3?RTT的應用范圍

上面說了,是為了實現一些特效效果。一般是在游戲的攝像機進行設置,使得攝像機渲染的結果能存到Render Texture中。

1.4 什么是多重渲染目標?

Multiple Render Target, 簡稱MRT,也叫做多目標渲染,是一個意思。多重渲染目標允許我們同時把場景渲染到多個渲染目標紋理中,不用再是渲染整個場景后才儲存。在【技術美術圖形部分】關于前向渲染和延遲渲染中我在Unity實現延遲渲染中,提到了“RT0、RT1、RT2、RT3”這四個渲染紋理,就是延遲渲染使用到MRT的體現。

2 模擬鏡子效果

2.1 原理

就是創建除了MainCamera之外的另一個Camera:用于渲染鏡子想要反射的場景,同時這個Camera的Render Target選擇創建的一個Render Texture,這樣的話選中的Camera渲染的場景將不會到屏幕上,而是存到的選中的渲染紋理RT中。同時要注意,既然是鏡像效果,畫面肯定是要反轉一下。

2.2?效果展示

這里我為了練習自己搜索紋理的能力沒有用《入門精要》提供的一些紋理圖片,而是在網上搜索(推薦一個免費的紋理貼圖網站:Texture Ninja,如果有更好的歡迎分享!)自己想要效果的紋理圖片當作Texture,然后在PS里獲得Texuture的法線圖,再分別給場景中的Wall、Sphere、Cube們賦予想要的材質。?

2.3?實現過程

2.3.1 準備場景

首先是搭建場景,創建6個立方體把MainCamera包圍住,場景中放置一些物體,再加上3個Point Light,賦予對應的材質,Shader用的是標準光照Shader。

2.3.2 創建RT/Camera/“鏡子”

Project視圖下右鍵,Create -> Render Texture創建一個MirrorTexture渲染紋理;

Scene視圖下右鍵,創建一個Camera,并將Render Target選中剛才創建的RT:

我們的鏡子就用一個Quad平面代替,還需要創建MirrorMat材質以及MirrorShader。

2.3.3 用于“鏡子”平面的Shader

這個Shader輸入的texture是剛才創建的RenderTexuture,整個結構非常簡單,這里就直接貼上代碼了:

Shader "Unity Shaders Book/Chapter 10/Mirror" {Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{Pass{Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment fragsampler2D _MainTex;struct a2v {//必不可少的,object->clipspacefloat4 vertex : POSITION;//要使用uv?那要先存著float4 texcoord : TEXCOORD0; };struct v2f {float4 pos : SV_POSITION;float2 uv : TEXCOORD0; };v2f vert(a2v v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.texcoord; //什么都不需要做,就是獲取個紋理而已//還需要左右翻轉一下,關于x=0.5對稱:o.uv.x = 1 - o.uv.x;return o;}fixed4 frag(v2f i) : SV_Target {return tex2D(_MainTex, i.uv);}ENDCG}}FallBack OFF }

2.4 特點及應用

2.4.1 “鏡子”清晰度與什么有關?

清晰度完全取決于這個Render Texture的分辨率,上述效果中我的分辨率選擇的是默認的256x256,看上去會比較模糊,如果改成1024x1024,則會清晰很多,但會消耗更多的性能,必要時注意清晰度和性能二者的取舍:

2.4.2 應用

游戲里的鏡子是怎么做出來的? - 知乎 (zhihu.com)

想了解更多可以自行搜索“游戲中怎么做鏡子效果”等等,這里我只是貼了一個知乎的問題,16年的時候就有人回答了用渲染紋理實現鏡子效果的方法。

總結

以上是生活随笔為你收集整理的【Unity Shader】渲染纹理实现镜子效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久一区二区三区四区 | 日韩美女久久 | av黄色影院 | 久久人人视频 | 欧美日韩精品一区二区在线播放 | 亚洲不卡视频在线观看 | 德国性经典xxxx性hd | 99re免费视频精品全部 | 午夜三级影院 | 男女插插插网站 | 一级片在线免费观看 | 国产av日韩一区二区三区精品 | 精品亚洲aⅴ无码一区二区三区 | 91毛片观看| 成人无高清96免费 | 免费不卡av | 俄罗斯女人裸体性做爰 | 拔插拔插影库 | 台湾男男gay做爽爽的视频 | 亚洲美女激情视频 | 欧美日本韩国一区 | 日韩在线观看免费av | 国产精品香蕉 | 黄色片网站免费 | 极品少妇视频 | 国产成人传媒 | 成人毛片100部免费看 | 国产综合网站 | 97超碰色 | 美丽的姑娘在线观看 | 丝袜中文字幕 | 国产视频一二三四区 | 777久久久精品一区二区三区 | 日韩网站免费观看 | 日韩特级片 | 国产一区二区在线视频 | 亚洲30p | 欧美精品成人久久 | 已婚少妇美妙人妻系列 | 久久精品屋 | 欧美另类综合 | 噼里啪啦免费看 | 99精品久久精品一区二区 | 九九热国产 | 99精品区| 91在线免费网站 | 亚洲一区播放 | 国产视频一区在线观看 | 日本黄动漫 | 午夜一区不卡 | 国产自产精品 | 日日精品| 天天看片天天干 | 欧美成人女星 | 2019亚洲天堂| 国模私拍在线观看 | 欧美一级激情 | 伊人国产精品 | 呦女精品 | 欧美区一区 | 亚洲一区二区三区四区在线观看 | 黄色片中文字幕 | 欧美午夜剧场 | 91久久综合亚洲鲁鲁五月天 | 激情内射人妻1区2区3区 | www.日本高清 | 色视频在线免费观看 | 一级片aaa | 国产成人一区二区三区 | 成人在线播放网站 | 国产外围在线 | 饥渴少妇勾引水电工av | 久久精品国产免费看久久精品 | 欧美亚洲色综久久精品国产 | 黄色18网站| 久久理论电影 | 五月激情在线观看 | 三女同志亚洲人狂欢 | 亚洲激情图片区 | 秋霞影院一区二区 | 影音先锋黑人 | 曰韩一级片 | 免费国产在线观看 | 精品不卡一区二区三区 | 国产精品偷乱一区二区三区 | 国内精品在线观看视频 | 涩涩涩综合 | 色多多污污 | 欧美极品jizzhd欧美仙踪林 | 国产无码精品久久久 | 成人在线免费视频 | 国产在线黄色 | 一级免费黄色片 | 91精品国产综合久久久蜜臀粉嫩 | 91九色在线观看 | 国产乱人乱偷精品视频 | 国产精品久久久久久av | 国产在线观看无码免费视频 | 中出在线视频 |