shader開發(fā),需要了解shader的運行原理,它是基于GPU加速輔助運算的。gpu更像是數(shù)量巨大的極簡cpu構成,這樣讓每個像素,每個頂點來進行獨立的運算來達到渲染效果。
https://docs.godotengine.org/zh_CN/latest/tutorials/shading/index.html
Godot的Shader和GLSL有些許不同,這個不同麻,我也不太清楚,因為我沒接觸過??
那么開始吧:
類型 shader_type
首先第一行必須定義shader的類型
shader_type spatial;
你必須通知這個腳本是用在什么類型上的,spatial是用于3d對象,cavas_item是用于2d對象,particles是用于粒子效果上。每種的api不太一樣
渲染模式 render_mode
在第二行可以定義渲染模式,可選
render_mode unshaded, cull_disabled;
處理過程函數(shù)
頂點 vertex
particles對每個粒子調用一次vertex,另外兩個對每個頂點調用
片段 fregment
particles不調用它,另外兩個會在每個像素上調用
片處理可以對色彩,透明,反射等特性進行響應,因為它是被頂點圍成的微小的面,所以整個面上近似的會獲得相同的特性。
燈光 light
light函數(shù)會影響到物體,也會影響到物體上照射到光
| shader_type | 類型 | vertex | fregment |
|---|---|---|---|
| spatial | 3d渲染 | ?/每頂點 | ?/每像素 |
| cavas_item | 2d渲染 | ?/每頂點 | ?/每像素 |
| particles | 粒子渲染 | ?/每粒子 | ? |