32 lines
971 B
Markdown
32 lines
971 B
Markdown
#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)
|