Bloom pass.
This commit is contained in:
parent
35ddb29f8a
commit
804d3c9400
16
Assets/bloom_material.json
Normal file
16
Assets/bloom_material.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"material_resources": [
|
||||||
|
{
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"bind_constants": [],
|
||||||
|
"bind_textures": [
|
||||||
|
],
|
||||||
|
"id": "bloom_pass"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "bloom_material",
|
||||||
|
"shader": "bloom_pass/bloom_pass"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
22
raw/bloom_pass/bloom_pass.frag.glsl
Normal file
22
raw/bloom_pass/bloom_pass.frag.glsl
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uniform sampler2D tex;
|
||||||
|
|
||||||
|
in vec2 texCoord;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
vec4 col = texture(tex, texCoord);
|
||||||
|
|
||||||
|
float brightness = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722));
|
||||||
|
if (brightness > 0.99) {
|
||||||
|
gl_FragColor = vec4(col.rgb, 1.0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl_FragColor = vec4(0.0);
|
||||||
|
// gl_FragColor = col;
|
||||||
|
}
|
33
raw/bloom_pass/bloom_pass.shader.json
Executable file
33
raw/bloom_pass/bloom_pass.shader.json
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"id": "bloom_pass",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"id": "depth_write",
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "compare_mode",
|
||||||
|
"value": "always"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cull_mode",
|
||||||
|
"value": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "blend_source",
|
||||||
|
"value": "blend_one"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "blend_destination",
|
||||||
|
"value": "blend_zero"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [],
|
||||||
|
"texture_params": [],
|
||||||
|
"vertex_shader": "bloom_pass.vert.glsl",
|
||||||
|
"fragment_shader": "bloom_pass.frag.glsl"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
raw/bloom_pass/bloom_pass.vert.glsl
Normal file
18
raw/bloom_pass/bloom_pass.vert.glsl
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#ifdef GL_ES
|
||||||
|
precision highp float;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
in vec2 pos;
|
||||||
|
|
||||||
|
out vec2 texCoord;
|
||||||
|
|
||||||
|
const vec2 madd = vec2(0.5, 0.5);
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
// Scale vertex attribute to [0-1] range
|
||||||
|
texCoord = pos.xy * madd + madd;
|
||||||
|
|
||||||
|
gl_Position = vec4(pos.xy, 0.0, 1.0);
|
||||||
|
}
|
|
@ -9,9 +9,26 @@ uniform vec2 dir;
|
||||||
|
|
||||||
in vec2 texCoord;
|
in vec2 texCoord;
|
||||||
|
|
||||||
|
const float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec2 step = dir / vec2(400, 300);
|
vec2 step = dir / vec2(400, 300);
|
||||||
|
// vec2 step = dir / vec2(800, 600);
|
||||||
|
|
||||||
|
vec3 result = texture(tex, texCoord).rgb * weight[0];
|
||||||
|
|
||||||
|
result += texture(tex, texCoord + step * 1).rgb * weight[1];
|
||||||
|
result += texture(tex, texCoord - step * 1).rgb * weight[1];
|
||||||
|
result += texture(tex, texCoord + step * 2).rgb * weight[2];
|
||||||
|
result += texture(tex, texCoord - step * 2).rgb * weight[2];
|
||||||
|
result += texture(tex, texCoord + step * 3).rgb * weight[3];
|
||||||
|
result += texture(tex, texCoord - step * 3).rgb * weight[3];
|
||||||
|
result += texture(tex, texCoord + step * 4).rgb * weight[4];
|
||||||
|
result += texture(tex, texCoord - step * 4).rgb * weight[4];
|
||||||
|
|
||||||
|
gl_FragColor = vec4(vec3(result), 1.0);
|
||||||
|
|
||||||
|
/*
|
||||||
float res = texture( tex, texCoord + (step * 4.0) ).r;
|
float res = texture( tex, texCoord + (step * 4.0) ).r;
|
||||||
res += texture( tex, texCoord + (step * 3.0) ).r;
|
res += texture( tex, texCoord + (step * 3.0) ).r;
|
||||||
res += texture( tex, texCoord + (step * 2.0) ).r;
|
res += texture( tex, texCoord + (step * 2.0) ).r;
|
||||||
|
@ -23,6 +40,6 @@ void main() {
|
||||||
res += texture( tex, texCoord -(step * 4.0) ).r;
|
res += texture( tex, texCoord -(step * 4.0) ).r;
|
||||||
res /= 9.0;
|
res /= 9.0;
|
||||||
|
|
||||||
gl_FragColor = vec4(vec3(res), 1.0);
|
gl_FragColor = vec4(vec3(res), 1.0);*/
|
||||||
// gl_FragColor = texture(tex, texCoord);
|
// gl_FragColor = texture(tex, texCoord);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,28 @@
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D lightmap;
|
uniform sampler2D tex;
|
||||||
uniform sampler2D aomap;
|
uniform sampler2D tex2;
|
||||||
|
|
||||||
in vec2 texCoord;
|
in vec2 texCoord;
|
||||||
|
|
||||||
|
const float exposure = 1.0;
|
||||||
|
const float gamma = 2.2;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec3 lcol = texture(lightmap, texCoord).rgb;
|
vec3 col = texture(tex, texCoord).rgb;
|
||||||
vec3 aocol = texture(aomap, texCoord).rgb;
|
vec3 col2 = texture(tex2, texCoord).rgb;
|
||||||
|
|
||||||
gl_FragColor = vec4(lcol * aocol, 1.0);
|
// // Additive blending
|
||||||
// gl_FragColor = vec4(aocol, 1.0);
|
col += col2;
|
||||||
// gl_FragColor = vec4(lcol, 1.0);
|
|
||||||
|
// // Tone mapping
|
||||||
|
// vec3 result = vec3(1.0) - exp(-col * exposure);
|
||||||
|
|
||||||
|
// // Gamma correction
|
||||||
|
// result = pow(result, vec3(1.0 / gamma));
|
||||||
|
// gl_FragColor = vec4(result, 1.0f);
|
||||||
|
|
||||||
|
|
||||||
|
gl_FragColor = vec4(col, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,13 +43,17 @@ os.chdir('../dof_pass')
|
||||||
make_resources.make('dof_pass.shader.json')
|
make_resources.make('dof_pass.shader.json')
|
||||||
make_variants.make('dof_pass.shader.json')
|
make_variants.make('dof_pass.shader.json')
|
||||||
|
|
||||||
os.chdir('../ssr_pass')
|
os.chdir('../bloom_pass')
|
||||||
make_resources.make('ssr_pass.shader.json')
|
make_resources.make('bloom_pass.shader.json')
|
||||||
make_variants.make('ssr_pass.shader.json')
|
make_variants.make('bloom_pass.shader.json')
|
||||||
|
|
||||||
# os.chdir('../combine_pass')
|
# os.chdir('../ssr_pass')
|
||||||
# make_resources.make('combine_pass.shader.json')
|
# make_resources.make('ssr_pass.shader.json')
|
||||||
# make_variants.make('combine_pass.shader.json')
|
# make_variants.make('ssr_pass.shader.json')
|
||||||
|
|
||||||
|
os.chdir('../combine_pass')
|
||||||
|
make_resources.make('combine_pass.shader.json')
|
||||||
|
make_variants.make('combine_pass.shader.json')
|
||||||
|
|
||||||
# os.chdir('../pt_trace_pass')
|
# os.chdir('../pt_trace_pass')
|
||||||
# make_resources.make('pt_trace_pass.shader.json')
|
# make_resources.make('pt_trace_pass.shader.json')
|
||||||
|
|
Loading…
Reference in a new issue