<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Unity3D學習筆記11——后處理

      1. 概述

      一般來說,圖形渲染引擎都會把幀緩沖(Framebuffer)技術封裝成兩個接口,其中之一就是后處理(Post-process)。直觀來理解,后處理指的是場景在渲染完成之后,不進入屏幕的顏色緩沖區,而是暫時進入幀緩沖區;在對幀緩沖區的畫面進行處理之后,再進入顏色緩沖區被屏幕顯示出來。這個步驟只處理二維的畫面,所以有點像圖像處理的過程,或者可以看成對二維畫面進行PS。

      2. 詳論

      2.1. 實現

      第一點需要明確的是,Unity后處理既不是寫在腳本類MonoBehaviour的Start()中,也不是寫在Update()中,而是寫在專門的函數OnRenderImage()中。這是由內置渲染流水線決定的:在相機渲染整個場景完成之后,最后再進行全屏后期處理效果。因而,處理后處理的腳本,需要Camera組件。

      在Unity中創建隨意一個場景,創建一個腳本掛到Camera游戲對象上:

      using UnityEngine;
      
      [ExecuteInEditMode]
      [RequireComponent(typeof(Camera))]
      public class Note11Main : MonoBehaviour
      {
          public Material material;
      
          // Start is called before the first frame update
          void Start()
          {
              
          }
      
          // Update is called once per frame
          void Update()
          {
              
          }
      
          private void OnRenderImage(RenderTexture source, RenderTexture destination)
          {       
              Graphics.Blit(source, destination, material);
          }
      }
      
      

      傳入的材質使用的Shader為:

      Shader "Custom/PostProcessingTest"
      {
          Properties
          {
              _MainTex ("Texture", 2D) = "white" {}
          }
          SubShader
          {
              // No culling or depth
              Cull Off ZWrite Off ZTest Always
      
              Pass
              {
                  CGPROGRAM
                  #pragma vertex vert
                  #pragma fragment frag
      
                  #include "UnityCG.cginc"
      
                  struct appdata
                  {
                      float4 vertex : POSITION;
                      float2 uv : TEXCOORD0;
                  };
      
                  struct v2f
                  {
                      float2 uv : TEXCOORD0;
                      float4 vertex : SV_POSITION;
                  };
      
                  v2f vert (appdata v)
                  {
                      v2f o;
                      o.vertex = UnityObjectToClipPos(v.vertex);
                      o.uv = v.uv;
                      return o;
                  }
      
                  sampler2D _MainTex;
      
                  fixed4 frag (v2f i) : SV_Target
                  {
      				if(i.uv.x>0.5f)
      				{
      					discard;
      				}
                      fixed4 col = tex2D(_MainTex, i.uv);
                      // just invert the colors
                      col.rgb = 1 - col.rgb;			
                      return col;
                  }
                  ENDCG
              }
          }
      }
      

      最終的效果為:
      imglink1

      2.2. 解析

      需要理解的是,后處理的Shader雖然大部分都是在片元著色器中寫,但是后處理本質上還是一個或者多個渲染指令,只要是渲染指令,就要經過從頂點著色器到片元著色器的過程。實際上,后處理的一個指令就是繪制了一個屏幕大小的矩形,紋理是幀緩沖中存儲的場景畫面。理解這一點,才能理解后處理是一個全屏幕操作,與具體的三維物體無關。

      在這個例子中,在片元著色器中把顏色取反,所以最終整個屏幕的顏色RGB顛倒了;設置紋理坐標在X方向上的值大于一半時不顯示,所以整個屏幕的右邊就不顯示顏色。

      可以在Frame Debug中看到這個后處理指令:
      imglink2

      代碼地址

      posted @ 2022-08-11 21:59  charlee44  閱讀(1036)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 人妻 日韩精品 中文字幕| 精品久久人人妻人人做精品| 亚洲日本韩国欧美云霸高清| 亚洲av成人无码天堂| 真人抽搐一进一出视频| 中文字幕日韩精品有码| 乱中年女人伦av二区| 国产精品综合一区二区三区| 久久精品一本到99热免费| 亚洲国产成人精品av区按摩| 国内永久福利在线视频图片 | 污网站在线观看视频| 人妻出轨av中文字幕| 粗大猛烈进出高潮视频| 精品中文人妻中文字幕| 国产精品一二区在线观看| 日韩人妻中文字幕精品| 国产av黄色一区二区三区| 国产精品自拍一二三四区| 成人国产亚洲精品一区二区| 欧美成人午夜精品免费福利| 亚洲欧美偷国产日韩| 丰满少妇内射一区| 国产肥臀视频一区二区三区| 亚洲一区二区精品动漫| 玛纳斯县| 999精品全免费观看视频| 日韩美女一区二区三区视频| 国产精品亚洲综合久久小说| 国产精品www夜色视频| 视频一区视频二区亚洲视频| 欧美怡春院一区二区三区| 国产精品国产高清国产av| 国产精品一区二区三区污| 激情在线一区二区三区视频| 91中文字幕一区在线| 亚洲午夜无码久久久久小说| 国产丰满乱子伦无码专区| 无码专区 人妻系列 在线| 久久久久成人片免费观看蜜芽| 久久精品国产亚洲av品|