Skip to content

Commit

Permalink
fixed ssgi passes and split them in three passes.
Browse files Browse the repository at this point in the history
  • Loading branch information
e2002e committed Feb 15, 2023
1 parent affee6c commit cceed5c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
4 changes: 2 additions & 2 deletions Shaders/deferred_light/deferred_light.frag.glsl
Expand Up @@ -334,7 +334,7 @@ reflection = traceReflection(voxels, voxpos, n, -v, roughness).rgb * voxelgiRefl
#endif
#endif//VoxelGI

fragColor.rgb = (diffuse * envl) + (reflection * envl);
fragColor.rgb = (diffuse + reflection) * envl;

#ifdef _VoxelAOvar
fragColor.rgb *= voxelgiEnv;
Expand Down Expand Up @@ -380,7 +380,7 @@ fragColor.rgb *= textureLod(ssaotex, texCoord, 0.0).r;
float sdotVH = max(0.0, dot(v, sh));
float sdotNL = max(0.0, dot(n, sunDir));
float svisibility = 1.0;
vec3 sdirect = lambertDiffuseBRDF(albedo, sdotNL) + (specularBRDF(f0, roughness, sdotNL, sdotNH, dotNV, sdotVH) + reflection) * occspec.y;
vec3 sdirect = lambertDiffuseBRDF(albedo, sdotNL) + diffuse + (specularBRDF(f0, roughness, sdotNL, sdotNH, dotNV, sdotVH) + reflection) * occspec.y;

#ifdef _ShadowMap
#ifdef _CSM
Expand Down
8 changes: 4 additions & 4 deletions Sources/armory/renderpath/RenderPathDeferred.hx
Expand Up @@ -188,11 +188,11 @@ class RenderPathDeferred {
#if (rp_ssgi != "Off")
{
#if (rp_ssgi == "SSAO")
path.loadShader("shader_datas/ssgi_pass/ssao_pass");
path.loadShader("shader_datas/ssao_pass/ssao_pass");
#elseif (rp_ssgi == "RTAO")
path.loadShader("shader_datas/ssgi_pass/rtao_pass");
#else (rp_ssgi == "RTGI")
path.loadShader("shader_datas/ssgi_pass/rtgi_pass");
path.loadShader("shader_datas/rtao_pass/rtao_pass");
#else
path.loadShader("shader_datas/rtgi_pass/rtgi_pass");
#end
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
Expand Down
12 changes: 8 additions & 4 deletions blender/arm/material/make_mesh.py
Expand Up @@ -623,6 +623,8 @@ def make_forward_base(con_mesh, parse_opacity=False, transluc_pass=False):
frag.write('vec3 indirect = shIrradiance(n, shirr);')
if '_EnvTex' in wrd.world_defs:
frag.write('indirect /= PI;')
else:
frag.write('vec3 indirect = vec3(0.0)')
if '_Rad' in wrd.world_defs:
frag.add_uniform('sampler2D senvmapRadiance', link='_envmapRadiance')
frag.add_uniform('int envmapNumMipmaps', link='_envmapNumMipmaps')
Expand Down Expand Up @@ -685,11 +687,11 @@ def make_forward_base(con_mesh, parse_opacity=False, transluc_pass=False):

frag.write('if (specular > 0.0 && roughness < 1.0)')
if '_VoxelGITemporal' in wrd.world_defs:
frag.write(' reflection = (traceReflection(voxels, voxpos, n, -vVec, roughness).rgb * voxelBlend + traceReflection(voxelsLast, voxpos, n, -vVec, roughness).rgb * (1.0 - voxelBlend)) * voxelgiRefl')
frag.write(' reflection = (traceReflection(voxels, voxpos, n, -vVec, roughness).rgb * voxelBlend + traceReflection(voxelsLast, voxpos, n, -vVec, roughness).rgb * (1.0 - voxelBlend)) * voxelgiRefl;')
else:
frag.write(' reflection = traceReflection(voxels, voxpos, n, -vVec, roughness).rgb * voxelgiRefl;')

frag.write('vec3 direct = (diffuse * indirect) + (reflection * indirect);')
frag.write('vec3 direct = (diffuse + reflection) * indirect;')

if '_VoxelGI' in wrd.world_defs or '_VoxelAOVar' in wrd.world_defs:
frag.write('direct *= voxelgiEnv;')
Expand All @@ -702,12 +704,14 @@ def make_forward_base(con_mesh, parse_opacity=False, transluc_pass=False):

#TODO add emission

frag.write('vec3 sdirect;')

if '_Sun' in wrd.world_defs:
frag.add_uniform('vec3 sunCol', '_sunColor')
frag.add_uniform('vec3 sunDir', '_sunDirection')
frag.write('float svisibility = 1.0;')
frag.write('float sdotNL = max(dot(n, sunDir), 0.0);')
frag.write('vec3 sdirect = lambertDiffuseBRDF(albedo, sdotNL) + diffuse + (specularBRDF(f0, roughness, sdotNL, dot(n, normalize(vVec + sunDir)), dotNV, dot(vVec, normalize(vVec + sunDir))) + reflection) * specular;')
frag.write('sdirect = lambertDiffuseBRDF(albedo, sdotNL) + diffuse + (specularBRDF(f0, roughness, sdotNL, dot(n, normalize(vVec + sunDir)), dotNV, dot(vVec, normalize(vVec + sunDir))) + reflection) * specular;')
if is_shadows:
vert.add_out('vec4 lightPosition')
vert.add_uniform('mat4 LWVP', '_biasLightWorldViewProjectionMatrixSun')
Expand Down Expand Up @@ -763,7 +767,7 @@ def make_forward_base(con_mesh, parse_opacity=False, transluc_pass=False):
else:
frag.add_uniform('vec2 lightProj', link='_lightPlaneProj', included=True)
frag.add_uniform('samplerCubeShadow shadowMapPoint[1]', included=True)
frag.write('vec3 sdirect = sampleLight(')
frag.write('sdirect = sampleLight(')
frag.write(' wposition, n, vVec, dotNV, pointPos, pointCol, albedo, roughness, specular, f0, false')
if is_shadows:
frag.write(' , 0, pointBias, receiveShadow')
Expand Down

0 comments on commit cceed5c

Please sign in to comment.