ObsidianNotes/GDShader.md

32 lines
971 B
Markdown
Raw Normal View History

#GODOT
### 基础语法
``` glsl
// gdscript 如何传递数据给 material
ShaderMaterial.set_shader_parameter
// Shader 的 vertex 如何传递 worldPosition 给 fragment 使用
声明变量时不用uniform 而是用 varying
// 如何读取repeat的贴图 (如果是主贴图的话, 需要在导入设置或者在CanvasItem内的Texture中 选择 repeat)
uniform sampler2D noise : repeat_enable;
或者去fract uv 获得小数部分然后采样
// 如何uniform 一个可以编辑的颜色
uniform vec4 new_color : source_color = vec4(1,1,1,1);
// 如何uniform 一个range float
uniform float test: hint_range(0.0, 1.0, 0.1) = .5;
```
### Example : 顶点中获得世界坐标并传递给片元(2D)
``` glsl
varying vec2 worldPos;
void vertex() {
worldPos = (MODEL_MATRIX * vec4(VERTEX, 0.0, 1.0)).xy;
}
void fragment(){
//do some thing..
}
```
- [For More Detail Document](https://docs.godotengine.org/zh_CN/4.x/tutorials/shaders/shader_reference/index.html)