shader開發(fā),需要了解shader的運(yùn)行原理,它是基于GPU加速輔助運(yùn)算的甫匹。gpu更像是數(shù)量巨大的極簡(jiǎn)cpu構(gòu)成,這樣讓每個(gè)像素惦费,每個(gè)頂點(diǎn)來進(jìn)行獨(dú)立的運(yùn)算來達(dá)到渲染效果兵迅。
https://docs.godotengine.org/zh_CN/latest/tutorials/shading/index.html
Godot的Shader和GLSL有些許不同,這個(gè)不同麻薪贫,我也不太清楚恍箭,因?yàn)槲覜]接觸過??
那么開始吧:
類型 shader_type
首先第一行必須定義shader的類型
shader_type spatial;
你必須通知這個(gè)腳本是用在什么類型上的,spatial是用于3d對(duì)象瞧省,cavas_item是用于2d對(duì)象扯夭,particles是用于粒子效果上。每種的api不太一樣
渲染模式 render_mode
在第二行可以定義渲染模式鞍匾,可選
render_mode unshaded, cull_disabled;
處理過程函數(shù)
頂點(diǎn) vertex
particles對(duì)每個(gè)粒子調(diào)用一次vertex交洗,另外兩個(gè)對(duì)每個(gè)頂點(diǎn)調(diào)用
片段 fregment
particles不調(diào)用它,另外兩個(gè)會(huì)在每個(gè)像素上調(diào)用
片處理可以對(duì)色彩橡淑,透明构拳,反射等特性進(jìn)行響應(yīng),因?yàn)樗潜豁旤c(diǎn)圍成的微小的面梁棠,所以整個(gè)面上近似的會(huì)獲得相同的特性置森。
燈光 light
light函數(shù)會(huì)影響到物體,也會(huì)影響到物體上照射到光
shader_type | 類型 | vertex | fregment |
---|---|---|---|
spatial | 3d渲染 | ?/每頂點(diǎn) | ?/每像素 |
cavas_item | 2d渲染 | ?/每頂點(diǎn) | ?/每像素 |
particles | 粒子渲染 | ?/每粒子 | ? |