Add option to ignore irradiance for baked environments
This commit is contained in:
parent
f1858550d0
commit
aec10274f4
|
@ -21,6 +21,7 @@
|
|||
uniform sampler2D gbufferD;
|
||||
uniform sampler2D gbuffer0;
|
||||
uniform sampler2D gbuffer1;
|
||||
uniform sampler2D gbuffer2;
|
||||
|
||||
#ifdef _VoxelAOvar
|
||||
uniform sampler3D voxels;
|
||||
|
@ -205,6 +206,8 @@ void main() {
|
|||
vec3 v = normalize(eye - p);
|
||||
float dotNV = max(dot(n, v), 0.0);
|
||||
|
||||
vec4 g2 = textureLod(gbuffer2, texCoord, 0.0);
|
||||
|
||||
#ifdef _MicroShadowing
|
||||
occspec.x = mix(1.0, occspec.x, dotNV); // AO Fresnel
|
||||
#endif
|
||||
|
@ -215,7 +218,15 @@ void main() {
|
|||
|
||||
// Envmap
|
||||
#ifdef _Irr
|
||||
|
||||
vec3 envl = shIrradiance(n, shirr);
|
||||
|
||||
if (g2.b < 0.5) {
|
||||
envl = envl;
|
||||
} else {
|
||||
envl = vec3(1.0);
|
||||
}
|
||||
|
||||
#ifdef _EnvTex
|
||||
envl /= PI;
|
||||
#endif
|
||||
|
|
|
@ -549,6 +549,13 @@ class RenderPathDeferred {
|
|||
path.bindTarget("_main", "gbufferD");
|
||||
path.bindTarget("gbuffer0", "gbuffer0");
|
||||
path.bindTarget("gbuffer1", "gbuffer1");
|
||||
|
||||
#if rp_gbuffer2
|
||||
{
|
||||
path.bindTarget("gbuffer2", "gbuffer2");
|
||||
}
|
||||
#end
|
||||
|
||||
#if (rp_ssgi != "Off")
|
||||
{
|
||||
if (armory.data.Config.raw.rp_ssgi != false) {
|
||||
|
|
|
@ -367,7 +367,18 @@ def build():
|
|||
assets.add_khafile_def('rp_chromatic_aberration')
|
||||
assets.add_shader_pass('chromatic_aberration_pass')
|
||||
|
||||
gbuffer2 = '_Veloc' in wrd.world_defs
|
||||
ignoreIrr = False
|
||||
|
||||
for obj in bpy.data.objects:
|
||||
if obj.type == "MESH":
|
||||
for slot in obj.material_slots:
|
||||
mat = slot.material
|
||||
if mat.arm_ignore_irradiance:
|
||||
ignoreIrr = True
|
||||
|
||||
if ignoreIrr:
|
||||
wrd.world_defs += '_IgnoreIrr'
|
||||
gbuffer2 = '_Veloc' in wrd.world_defs or '_IgnoreIrr' in wrd.world_defs
|
||||
if gbuffer2:
|
||||
assets.add_khafile_def('rp_gbuffer2')
|
||||
wrd.world_defs += '_gbuffer2'
|
||||
|
|
|
@ -268,6 +268,9 @@ def make_deferred(con_mesh, rpasses):
|
|||
frag.write('vec2 posb = (prevwvpposition.xy / prevwvpposition.w) * 0.5 + 0.5;')
|
||||
frag.write('fragColor[2].rg = vec2(posa - posb);')
|
||||
|
||||
if mat_state.material.arm_ignore_irradiance:
|
||||
frag.write('fragColor[2].b = 1.0;')
|
||||
|
||||
return con_mesh
|
||||
|
||||
def make_raytracer(con_mesh):
|
||||
|
|
|
@ -331,6 +331,7 @@ def init_properties():
|
|||
bpy.types.Material.arm_overlay = BoolProperty(name="Overlay", default=False)
|
||||
bpy.types.Material.arm_decal = BoolProperty(name="Decal", default=False)
|
||||
bpy.types.Material.arm_two_sided = BoolProperty(name="Two-Sided", description="Flip normal when drawing back-face", default=False)
|
||||
bpy.types.Material.arm_ignore_irradiance = BoolProperty(name="Ignore Irradiance", description="Ignore irradiance for material", default=False)
|
||||
bpy.types.Material.arm_cull_mode = EnumProperty(
|
||||
items=[('none', 'Both', 'None'),
|
||||
('clockwise', 'Front', 'Clockwise'),
|
||||
|
|
|
@ -446,6 +446,7 @@ class ARM_PT_MaterialPropsPanel(bpy.types.Panel):
|
|||
wrd = bpy.data.worlds['Arm']
|
||||
columnb.enabled = len(wrd.arm_rplist) > 0 and arm.utils.get_rp().rp_renderer == 'Forward'
|
||||
columnb.prop(mat, 'arm_receive_shadow')
|
||||
layout.prop(mat, 'arm_ignore_irradiance')
|
||||
layout.prop(mat, 'arm_two_sided')
|
||||
columnb = layout.column()
|
||||
columnb.enabled = not mat.arm_two_sided
|
||||
|
|
Loading…
Reference in a new issue