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;
|
||||
|
||||
const float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);
|
||||
|
||||
void main() {
|
||||
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;
|
||||
res += texture( tex, texCoord + (step * 3.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 /= 9.0;
|
||||
|
||||
gl_FragColor = vec4(vec3(res), 1.0);
|
||||
gl_FragColor = vec4(vec3(res), 1.0);*/
|
||||
// gl_FragColor = texture(tex, texCoord);
|
||||
}
|
||||
|
|
|
@ -4,16 +4,28 @@
|
|||
precision mediump float;
|
||||
#endif
|
||||
|
||||
uniform sampler2D lightmap;
|
||||
uniform sampler2D aomap;
|
||||
uniform sampler2D tex;
|
||||
uniform sampler2D tex2;
|
||||
|
||||
in vec2 texCoord;
|
||||
|
||||
void main() {
|
||||
vec3 lcol = texture(lightmap, texCoord).rgb;
|
||||
vec3 aocol = texture(aomap, texCoord).rgb;
|
||||
const float exposure = 1.0;
|
||||
const float gamma = 2.2;
|
||||
|
||||
gl_FragColor = vec4(lcol * aocol, 1.0);
|
||||
// gl_FragColor = vec4(aocol, 1.0);
|
||||
// gl_FragColor = vec4(lcol, 1.0);
|
||||
void main() {
|
||||
vec3 col = texture(tex, texCoord).rgb;
|
||||
vec3 col2 = texture(tex2, texCoord).rgb;
|
||||
|
||||
// // Additive blending
|
||||
col += col2;
|
||||
|
||||
// // 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_variants.make('dof_pass.shader.json')
|
||||
|
||||
os.chdir('../ssr_pass')
|
||||
make_resources.make('ssr_pass.shader.json')
|
||||
make_variants.make('ssr_pass.shader.json')
|
||||
os.chdir('../bloom_pass')
|
||||
make_resources.make('bloom_pass.shader.json')
|
||||
make_variants.make('bloom_pass.shader.json')
|
||||
|
||||
# os.chdir('../combine_pass')
|
||||
# make_resources.make('combine_pass.shader.json')
|
||||
# make_variants.make('combine_pass.shader.json')
|
||||
# os.chdir('../ssr_pass')
|
||||
# make_resources.make('ssr_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')
|
||||
# make_resources.make('pt_trace_pass.shader.json')
|
||||
|
|
Loading…
Reference in a new issue