Higher range for emission

This commit is contained in:
Lubos Lenco 2017-06-26 22:39:02 +02:00
parent 6500b19bb4
commit 2d8dd9c59b
7 changed files with 18 additions and 15 deletions

View file

@ -22,9 +22,10 @@ void main() {
col += texture(tex, vec2(texCoord.x, texCoord.y + texStep.y * 1.5));
col /= 4.0;
float brightness = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722));
if (brightness > bloomThreshold) {
fragColor.rgb = vec3(col.rgb / 2);
// float brightness = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722));
// if (brightness > bloomThreshold) {
if (col.r + col.g + col.b > bloomThreshold) {
fragColor.rgb = col.rgb;
return;
}
fragColor.rgb = vec3(0.0);

View file

@ -21,7 +21,7 @@ out vec4 fragColor;
const float weight[20] = float[] (0.06649, 0.065575, 0.062905, 0.058694, 0.053269, 0.047023, 0.040375, 0.033719, 0.027391, 0.021642, 0.016633, 0.012433, 0.00904, 0.006393, 0.004398, 0.002943, 0.001915, 0.001212, 0.000746, 0.000447);
void main() {
vec2 step = dir / 100.0 * bloomRadius; //screenSize.xy;
vec2 step = dir / 200.0 * bloomRadius; //screenSize.xy;
fragColor.rgb = texture(tex, texCoord).rgb * weight[0];
@ -83,5 +83,5 @@ void main() {
fragColor.rgb += texture(tex, texCoord + step * 19.5).rgb * weight[19];
fragColor.rgb += texture(tex, texCoord - step * 19.5).rgb * weight[19];
fragColor.rgb *= bloomStrength / 4;
fragColor.rgb *= bloomStrength / 40;
}

View file

@ -81,7 +81,7 @@ void main() {
vec4 indirectDiffuse = indirectDiffuseLight(n, wpos);
vec3 reflectWorld = reflect(-v, n);
vec3 indirectSpecular = traceSpecularVoxelCone(wpos, reflectWorld, n, metrough.y * 10.0);
vec3 indirectSpecular = traceSpecularVoxelCone(wpos, reflectWorld, n, metrough.y * 12.0);
indirectSpecular *= f0 * envBRDF.x + envBRDF.y;
fragColor.rgb = indirectDiffuse.rgb * voxelgiDiff * g1.rgb + indirectSpecular * voxelgiSpec;

View file

@ -30,6 +30,9 @@ vec4 traceDiffuseVoxelCone(const vec3 from, vec3 direction) {
float level = log2(l);
float ll = (level + 1.0) * (level + 1.0);
vec4 voxel = textureLod(voxels, c, min(MAX_MIPMAP, level));
#ifdef _Cycles
voxel.rgb *= 10.0; // Higher range to allow emission
#endif
acc += 0.075 * ll * voxel * pow(1.0 - voxel.a, 2.0);
dist += ll * VOXEL_SIZE * 2.0;
}

View file

@ -189,7 +189,7 @@ def parse_shader(node, socket):
out_emission = parse_vector_input(node.inputs[8])
parsing_basecolor(False)
if node.inputs[9].is_linked or node.inputs[9].default_value != 1.0:
out_emission = '({0} * {1})'.format(out_emission, parse_value_input(node.inputs[9]))
out_emission = '({0} * {1} * 10.0)'.format(out_emission, parse_value_input(node.inputs[9]))
out_basecol = '({0} + {1})'.format(out_basecol, out_emission)
if parse_opacity:

View file

@ -115,11 +115,10 @@ def make(context_id):
geom.write('}')
geom.write('EndPrimitive();')
if wrd.lighting_model == 'Cycles':
frag.write('basecol /= 10.0;') # Higher range to allow emission
frag.write('vec3 color;')
frag.write('if (lightShadow > 0) color = basecol * visibility * lightColor * dotNL * attenuate(distance(wposition * voxelgiDimensions.x, lightPos));')
frag.write('else color = (basecol - 1.0);') # Emission only when no lamp or shadowmap is present
frag.write('vec3 color = basecol * visibility * lightColor * dotNL * attenuate(distance(wposition * voxelgiDimensions.x, lightPos));')
frag.write('vec3 voxel = wposition * 0.5 + vec3(0.5);')
frag.write('imageStore(voxels, ivec3(voxelgiResolution * voxel), vec4(color, 1.0));')

View file

@ -402,7 +402,7 @@ def init_properties():
bpy.types.World.voxelgi_diff = bpy.props.FloatProperty(name="Diffuse", description="", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_spec = bpy.props.FloatProperty(name="Specular", description="", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_occ = bpy.props.FloatProperty(name="Occlussion", description="", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_env = bpy.props.FloatProperty(name="Env Map", description="Contribute light from environment map", default=0.0, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_env = bpy.props.FloatProperty(name="Env Map", description="Contribute light from environment map", default=0.2, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_step = bpy.props.FloatProperty(name="Step", description="Step size", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.voxelgi_range = bpy.props.FloatProperty(name="Range", description="Maximum range", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.sss_width = bpy.props.FloatProperty(name="SSS Width", description="SSS blur strength", default=1.0, update=assets.invalidate_shader_cache)
@ -459,9 +459,9 @@ def init_properties():
bpy.types.World.generate_ssao_strength = bpy.props.FloatProperty(name="Strength", default=0.2, update=assets.invalidate_shader_cache)
bpy.types.World.generate_ssao_half_res = bpy.props.BoolProperty(name="Half Res", description="Trace in half resolution", default=False, update=assets.invalidate_shader_cache) # TODO: Refactor as quality enum
bpy.types.World.generate_bloom = bpy.props.BoolProperty(name="Bloom", default=True, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_threshold = bpy.props.FloatProperty(name="Threshold", default=20.0, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_strength = bpy.props.FloatProperty(name="Strength", default=0.5, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_radius = bpy.props.FloatProperty(name="Radius", default=0.5, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_threshold = bpy.props.FloatProperty(name="Threshold", default=5.0, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_strength = bpy.props.FloatProperty(name="Strength", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.generate_bloom_radius = bpy.props.FloatProperty(name="Radius", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.generate_motion_blur = bpy.props.BoolProperty(name="Motion Blur", default=True, update=assets.invalidate_shader_cache)
bpy.types.World.generate_motion_blur_intensity = bpy.props.FloatProperty(name="Intensity", default=1.0, update=assets.invalidate_shader_cache)
bpy.types.World.generate_ssr = bpy.props.BoolProperty(name="SSR", description="Screen-Space Reflections", default=True, update=assets.invalidate_shader_cache)