godot 隨機(jī)地圖3-shader language簡介
godot shader是一個簡化的glsl,完全依賴glsl,當(dāng)然從頭開始glsl難度不高,但是畫時間。
直接從重點(diǎn)開始:
一、glsl是高度并行化的
? ? 它自帶?
????????for x{
????????????for y {
????????????????????func
????????????????????}
????????????????}
????? ?的循環(huán)。
?
二、主要分兩部分
????頂點(diǎn)計算+頂點(diǎn)構(gòu)成的幾何圖形里面把顏色填進(jìn)去
????所以glsl分為?vertex shader(頂點(diǎn))和fragment shader(著色) ,兩個文本文件。這兩個文本需要傳遞的數(shù)據(jù),需要聲明。
????vertex shader固定輸出處理好的頂點(diǎn),fragment shader會固定輸出梳理好的色彩。
????如果需要還可以設(shè)置特殊的幾何shader,但是搞渲染得,基本上不會用。
三、數(shù)據(jù)傳入
????uniform 定義的參數(shù)可以和cpu互通
????vbo:Vertex Buffer Object,陣列數(shù)據(jù),頂點(diǎn)啊,角度啊,看你像怎么傳輸,他的傳輸類似雖然是一次傳入一排,但是會通過分割,把數(shù)據(jù)分成幾部分,一般情況使用struct的捆綁模式。
? ? ebo:Element Buffer Object? = ibo :index buffer object
? ? 上傳的頂點(diǎn)如何排序,排成三角網(wǎng)
????vao:Vertex Arrays Object,在cpu上留下一個分割好了的vbo的指針,因?yàn)樯蟼鞯斤@存的vbo可以多種分割方式,分割后的數(shù)據(jù)就是要得留一個明信片,執(zhí)行的時候找vao
????一個vbo(頂點(diǎn)陣列),可以通過不同的ebo(排序),不同的分割方式(vao),玩出不同花樣。
如果想快速入門shader language,就直接去取shadertoy模仿案例,因?yàn)樗皇菗Q了種方式的c語言。
在godot shader language,進(jìn)行了很多簡化,不需要魔法召喚gpu,也不需要在復(fù)雜的數(shù)據(jù)傳入。如果有勇敢glsl就會發(fā)現(xiàn),godot shader language做了很多簡化。非常不推薦直接上godot shader language,不理解glsl的情況下學(xué)godot shader language,真的很難。
????
????