shader开发,需要了解shader的运行原理,它是基于GPU加速辅助运算的。gpu更像是数量巨大的极简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;
处理过程函数
顶点 vertex
particles对每个粒子调用一次vertex,另外两个对每个顶点调用
片段 fregment
particles不调用它,另外两个会在每个像素上调用
片处理可以对色彩,透明,反射等特性进行响应,因为它是被顶点围成的微小的面,所以整个面上近似的会获得相同的特性。
灯光 light
light函数会影响到物体,也会影响到物体上照射到光
shader_type | 类型 | vertex | fregment |
---|---|---|---|
spatial | 3d渲染 | ✅/每顶点 | ✅/每像素 |
cavas_item | 2d渲染 | ✅/每顶点 | ✅/每像素 |
particles | 粒子渲染 | ✅/每粒子 | ❌ |