Moving bloom strength math to the combine steps, and fixing a redundant multiply issue in the REGL based renderer

This commit is contained in:
Rezmason
2022-10-04 21:53:53 -07:00
parent 507f907096
commit 3843dd90d1
17 changed files with 28 additions and 46 deletions

View File

@@ -1,5 +1,6 @@
struct Config {
pyramidHeight : f32,
bloomStrength : f32
};
@group(0) @binding(0) var<uniform> config : Config;
@@ -62,5 +63,5 @@ struct ComputeInput {
sum += textureSampleLevel( tex4, linearSampler, uv, i + 1.0 ) * weight;
}
textureStore(outputTex, coord, sum);
textureStore(outputTex, coord, sum * config.bloomStrength);
}

View File

@@ -1,5 +1,5 @@
struct Config {
bloomStrength : f32,
unused : f32,
};
@group(0) @binding(0) var<uniform> config : Config;
@@ -15,12 +15,14 @@ struct ComputeInput {
fn getBrightness(uv : vec2<f32>) -> vec4<f32> {
var primary = textureSampleLevel(tex, linearSampler, uv, 0.0);
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0) * config.bloomStrength;
return min((primary + bloom) * (2.0 - config.bloomStrength), vec4<f32>(1.0));
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0);
return primary + bloom;
}
@compute @workgroup_size(32, 1, 1) fn computeMain(input : ComputeInput) {
var unused = config.unused;
// Resolve the invocation ID to a texel coordinate
var coord = vec2<i32>(input.id.xy);
var screenSize = textureDimensions(tex);

View File

@@ -1,5 +1,5 @@
struct Config {
bloomStrength : f32,
unused : f32,
};
struct Time {
@@ -33,13 +33,15 @@ struct ComputeInput {
fn getBrightness(uv : vec2<f32>, intensity : f32) -> vec4<f32> {
var primary = textureSampleLevel(tex, linearSampler, uv, 0.0);
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0) * config.bloomStrength;
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0);
return primary * (1.0 + intensity * 0.3) + bloom * 0.5;
}
@compute @workgroup_size(32, 1, 1) fn computeMain(input : ComputeInput) {
var unused = config.unused;
// Resolve the invocation ID to a texel coordinate
var coord = vec2<i32>(input.id.xy);
var screenSize = textureDimensions(tex);

View File

@@ -1,5 +1,4 @@
struct Config {
bloomStrength : f32,
ditherMagnitude : f32,
backgroundColor : vec3<f32>,
cursorColor : vec3<f32>,
@@ -40,8 +39,8 @@ fn randomFloat( uv : vec2<f32> ) -> f32 {
fn getBrightness(uv : vec2<f32>) -> vec4<f32> {
var primary = textureSampleLevel(tex, linearSampler, uv, 0.0);
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0) * config.bloomStrength;
return min((primary + bloom) * (2.0 - config.bloomStrength), vec4<f32>(1.0));
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0);
return primary + bloom;
}
@compute @workgroup_size(32, 1, 1) fn computeMain(input : ComputeInput) {

View File

@@ -1,5 +1,4 @@
struct Config {
bloomStrength : f32,
ditherMagnitude : f32,
backgroundColor : vec3<f32>,
cursorColor : vec3<f32>,
@@ -36,8 +35,8 @@ fn randomFloat( uv : vec2<f32> ) -> f32 {
fn getBrightness(uv : vec2<f32>) -> vec4<f32> {
var primary = textureSampleLevel(tex, linearSampler, uv, 0.0);
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0) * config.bloomStrength;
return min((primary + bloom) * (2.0 - config.bloomStrength), vec4<f32>(1.0));
var bloom = textureSampleLevel(bloomTex, linearSampler, uv, 0.0);
return primary + bloom;
}
@compute @workgroup_size(32, 1, 1) fn computeMain(input : ComputeInput) {