#I want to make a gaussian shader. How to make a shader ?
4 messages · Page 1 of 1 (latest)
with my blur.fsh and blur.json
{
"vertex": "minecraft:blit_screen",
"fragment": "weave-ui:blur",
"samplers": [
{
"name": "DiffuseSampler"
}
],
"uniforms": [
{
"name": "ProjMat",
"type": "matrix4x4",
"count": 16,
"values": [
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
]
},
{
"name": "Radius",
"type": "float",
"count": 1,
"values": [ 0.0 ]
},
{
"name": "Direction",
"type": "float",
"count": 2,
"values": [ 0.0, 0.0 ]
},
{
"name": "TexelSize",
"type": "float",
"count": 2,
"values": [ 0.0, 0.0 ]
}
]
}
#version 150
uniform sampler2D DiffuseSampler;
uniform float Radius;
uniform vec2 Direction;
uniform vec2 TexelSize;
in vec2 texCoord;
out vec4 fragColor;
void main() {
vec4 sum = vec4(0.0);
float wsum = 0.0;
int loop_radius = int(clamp(Radius, 0.0, 32.0));
float r = float(loop_radius);
for (int i = -loop_radius; i <= loop_radius; i++) {
float x = float(i);
float w = exp(-(x * x) / (2.0 * r * r + 1e-5));
sum += texture(DiffuseSampler, texCoord + Direction * TexelSize * x) * w;
wsum += w;
}
fragColor = sum / max(wsum, 1e-5);
}