91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-05-27
  • 語言: 其他
  • 標簽: Unity??景深??

資源簡介

將Depth of Filed 掛載相機上,將Shader導入腳本中,然后調節數值,直到達到效果就好了

資源截圖

代碼片段和文件信息

using?UnityEngine;
using?System.Collections;

[ExecuteInEditMode]
public?class?DepthOfFiled?:?PostEffectbase
{

????[Range(0.0f?100.0f)]
????public?float?focalDistance?=?10.0f;
????[Range(0.0f?100.0f)]
????public?float?nearBlurScale?=?0.0f;
????[Range(0.0f?1000.0f)]
????public?float?farBlurScale?=?50.0f;
????//分辨率
????public?int?downSample?=?1;
????//采樣率
????public?int?samplerScale?=?1;

????private?Camera?_mainCam?=?null;
????public?Camera?MainCam
????{
????????get
????????{
????????????if?(_mainCam?==?null)
????????????????_mainCam?=?GetComponent();
????????????return?_mainCam;
????????}
????}

????void?OnEnable()
????{
????????//maincam的depthTextureMode是通過位運算開啟與關閉的
????????MainCam.depthTextureMode?|=?DepthTextureMode.Depth;
????}

????void?OnDisable()
????{
????????MainCam.depthTextureMode?&=?~DepthTextureMode.Depth;
????}

????void?OnRenderImage(RenderTexture?source?RenderTexture?destination)
????{
????????if?(_Material)
????????{
????????????//首先將我們設置的焦點限制在遠近裁剪面之間
????????????Mathf.Clamp(focalDistance?MainCam.nearClipPlane?MainCam.farClipPlane);

????????????//申請兩塊RT,并且分辨率按照downSameple降低
????????????RenderTexture?temp1?=?RenderTexture.GetTemporary(source.width?>>?downSample?source.height?>>?downSample?0?source.format);
????????????RenderTexture?temp2?=?RenderTexture.GetTemporary(source.width?>>?downSample?source.height?>>?downSample?0?source.format);

????????????//直接將場景圖拷貝到低分辨率的RT上達到降分辨率的效果
????????????Graphics.Blit(source?temp1);

????????????//高斯模糊,兩次模糊,橫向縱向,使用pass0進行高斯模糊
????????????_Material.SetVector(“_offsets“?new?Vector4(0?samplerScale?0?0));
????????????Graphics.Blit(temp1?temp2?_Material?0);
????????????_Material.SetVector(“_offsets“?new?Vector4(samplerScale?0?0?0));
????????????Graphics.Blit(temp2?temp1?_Material?0);

????????????//景深操作,景深需要兩的模糊效果圖我們通過_BlurTex變量傳入shader
????????????_Material.SetTexture(“_BlurTex“?temp1);
????????????//設置shader的參數,主要是焦點和遠近模糊的權重,權重可以控制插值時使用模糊圖片的權重
????????????_Material.SetFloat(“_focalDistance“?FocalDistance01(focalDistance));
????????????_Material.SetFloat(“_nearBlurScale“?nearBlurScale);
????????????_Material.SetFloat(“_farBlurScale“?farBlurScale);

????????????//使用pass1進行景深效果計算,清晰場景圖直接從source輸入到shader的_MainTex中
????????????Graphics.Blit(source?destination?_Material?1);

????????????//釋放申請的RT
????????????RenderTexture.ReleaseTemporary(temp1);
????????????RenderTexture.ReleaseTemporary(temp2);
????????}
????}

????//計算設置的焦點被轉換到01空間中的距離,以便shader中通過這個01空間的焦點距離與depth比較
????private?float?FocalDistance01(float?distance)
????{
????????return?MainCam.WorldToViewportPoint((distance?-?MainCam.nearClipPlane)?*?MainCam.transform.forward?+?MainCam.transform.position).z?/?(MainCam.farClipPlane?-?MainCam.nearClipPlane);
????}


}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-01-11?10:59??景深效果\
?????文件????????4222??2020-01-11?10:40??景深效果\DepthOfField.shader
?????文件????????3292??2020-01-11?10:40??景深效果\DepthOfFiled.cs
?????文件????????1158??2020-01-11?10:42??景深效果\PostEffectbase.cs

評論

共有 條評論