景深(depth of field),是指在攝影機鏡頭或其他成像器前沿能夠取得清晰影象的成像所測定的被攝物體前後距離範圍。
而景深效果是指在焦距之外的地方都是模糊的,只有焦距的地方清晰。
通過取樣攝像機的深度紋理,得到當前螢幕紋理每個點的深度,使用深度值與焦距值得到每個點到焦距的距離,並使用距離來對原影象和高斯模糊處理過的影象進行插值並輸出即可。
//垂直方向(y軸方向)的高斯模糊
v2fblur vertblurvertical
//水平方向(x軸方向)的高斯模糊
v2fblur vertblurhorizontal
fixed4 fragblur
(v2fblur i)
: sv_target ;
fixed3 sum =
tex2d
(_maintex, i.uv[0]
).rgb * weight[0]
;for
(int it =
1; it <
3; it++
)return
fixed4
(sum,
1.0);}
struct v2f ;
v2f vertdepthoffield
fixed4 fragdepthoffield
(v2f i)
: sv_target
else
if(lineardepth > _focusend)
half4 color =
tex2d
(_maintex,i.uv)
; half4 blurcolor =
tex2d
(_blurmaintex, i.uv)
; color =
lerp
(color, blurcolor, distance)
;return
fixed4
(color.rgb,1)
;}endcg
pass
pass
pass }
fallback off
}
using unityengine;
[executeineditmode]
public class depthoffield : posteffectsbase
} private camera _camera;
public camera camera
} private void
onenable()
[range(1f
,4.0f)]
public int blurspread =2;
[range
(0.01f
,1.0f)]
public float focusstart =
0.1f;[
range
(0.01f
,1.0f)]
public float focusend =
0.2f;[
range(1
,4)]
public int iterations =2;
private void
onrenderimage
(rendertexture source, rendertexture destination)
material.
settexture
("_blurmaintex"
, buffer0)
; graphics.
blit
(source, destination,material,2)
; rendertexture.
releasetemporary
(buffer0);}
else
}}
Shader 實驗06 後處理實現色散效果
上次寫完那坨固態水之後,就想試著寫乙個比較節省效能比較省的一片水試試,然鵝,天有不測風雲,人有旦夕禍福,我不幸地沉迷於空洞騎士,每天都沉迷於打boss與跑屍樂此不疲 我自己都覺得好悔恨,好罪惡,怎麼能天天打遊戲呢,所以今天先把這個簡單的後處理色散效果寫了,簡單水那個也快寫好了,真的快寫好了 色散是太...
《第四周實驗報告4 1》 類實現工資處理
程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 salary.cpp 作 者 計114 3 王興鋒 完成日期 2012 年 3 月 14 日 版 本 號 v 1.0 對任務及求解方法的描述部分 輸入描述 輸入工資。問題描述 1 輸入職工工資,工資儲存到salary陣列中,實際人數儲存到numbe...
作業系統實驗一 處理器排程演算法的實現
一 實驗目的 1 加深對處理機排程的作用和工作原理的理解。2 進一步認識併發執行的實質。二 實驗要求 本實驗要求用高階語言,模擬在單處理器情況下,採用多個排程演算法,對n個程序進行程序排程。語言自選。並完成實驗報告。三 實驗內容 在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒狀...