Unity Shader入門精要

2021-09-24 14:25:24 字數 1339 閱讀 4136

學習資料:unity shader入門精要

時長:乙個月

計畫:1~2天完成一章,預計乙個月內完成

幾何階段:gpu實現,輸出螢幕空間的二位點座標,深度,著色資訊,傳送給光柵化階段

光柵化階段:gpu實現,決定每個渲染圖元哪些畫素應該被繪製在螢幕上,將幾何階段傳來的頂點資料進行插值

頂點v法線的獲取方式:將所有用到該頂點v的三角形平面求出對應的法向量,再擬合,求單位化

漫反射[蘭伯特模型,背光區像平面]

高光反射[鏡面反射,馮氏光照模型]

凹凸對映

對於傳值我一直是有疑問的,到底在頂點著色器需要計算那些?在片元需要計算那些?唯一能確定的是在片元中進行光照計算效果要比在頂點著色器中要更平滑,視覺效果更好。

漸變紋理[更加靈活地控制漫反射光照結果],貼圖的wrap mode設為clamp模式,防止由於精度對顯示造成的影響

// upgrade note: replaced '_object2world' with 'unity_objecttoworld'

// upgrade note: replaced '_object2world' with 'unity_objecttoworld'

// upgrade note: replaced 'mul(unity_matrix_mvp,*)' with 'unityobjecttoclippos(*)'

shader "ramp texture"

_specular ("specular",color) = (1,1,1,1)

_gloss("gloss",range(8.0,256)) = 20

}subshader

cgprogram

#pragma vertex vert

#pragma fragment frag

fixed4 _color;

sampler2d _ramptex;

float4 _ramptex_st;

fixed4 _specular;

float _gloss;

struct a2v;

struct v2f;

#include "lighting.cginc"

v2f vert(a2v v)

fixed4 frag(v2f i):sv_target0

endcg}}

fallback "diffuse"

}

遮罩紋理[控制高光反射,在高光反射的時候加進紋理取樣得到的資料

總結:這幾種對映,給我感覺是通過紋理取樣,得到紋理的資料,對不同的光照種類進行調整,如果係數為0,就可以保證表現不受某種屬性的影響。。 感覺還沒理解透

筆記 《Unity Shader入門精要》

應用階段 輸出渲染圖元 rendering primitives 包括 準備場景資料 相機 場景模型 光源 粗粒度剔除 culling 把不可見的物體剔除 渲染狀態 材質 紋理,使用的shader等。光柵化階段 每個渲染圖元的哪些畫素應該被繪製在螢幕上,包括 三角形設定 三角形遍歷 片元著色器 逐片...

《UnityShader入門精要》Unity陰影

lightmode為shadowcaster的pass是用來渲染陰影對映紋理。該shader如果沒有定義lightmode為shadowcaster的pass,則會去fallback指定的shader繼續尋找。如果沒有找到,該物體無法向其他物體投射陰影,但能接收來自其他物體投射的陰影 螢幕空間的對映...

《Unity Shader入門精要》自學筆記(一)

shader custom zhudingdian subshader cgprogram float4 diffuse 取用設定中的顏色資訊 pragma vertex vert pragma fragment frag include lighting.cginc struct a2v stru...