This commit is contained in:
Lubos Lenco 2017-07-17 13:50:17 +02:00
parent bf474e9a3d
commit d05665982e
6 changed files with 47 additions and 5 deletions

View file

@ -14,6 +14,9 @@ precision mediump float;
#ifdef _VoxelGI
#include "../std/conetrace.glsl"
#endif
#ifdef _DFAO
#include "../std/sdf.glsl"
#endif
uniform sampler2D gbufferD;
uniform sampler2D gbuffer0;
@ -41,6 +44,9 @@ uniform float envmapStrength;
uniform vec3 eye;
uniform vec3 eyeLook;
#endif
#ifdef _DFAO
//!uniform sampler2D sdftex;
#endif
in vec2 texCoord;
#ifdef _Rad
@ -131,7 +137,11 @@ void main() {
#endif
#ifdef _SSAO
envl.rgb *= texture(ssaotex, texCoord).r; // SSAO
envl.rgb *= texture(ssaotex, texCoord).r;
#endif
#ifdef _DFAO
envl.rgb *= dfao(p, n);
#endif
#ifdef _VoxelGI

View file

@ -44,6 +44,11 @@
{
"name": "envmapStrength",
"link": "_envmapStrength"
},
{
"name": "sdftex",
"link": "_sdfTexture",
"ifdef": ["_DFAO"]
}
],
"vertex_shader": "deferred_indirect.vert.glsl",

View file

@ -156,7 +156,7 @@ void main() {
const float distmax = 40.0;
const float eps = 0.02;
const int maxSteps = 30;
float dist = 0.1;
float dist = 0.2;
// float test = mapsdf2(p);
// if (test < 0.1) {
@ -207,7 +207,7 @@ void main() {
// d = length((p + rd) - p3);
}
const float k = 2.0;
const float k = 1.0;
visibility = min(visibility, (k * d / dist));
dist += d;

View file

@ -45,3 +45,30 @@ float sdBox(vec3 p, vec3 b) {
vec3 d = abs(p) - b;
return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0));
}
float dfao(const vec3 p, const vec3 n) {
float occ = 0.0;
float sca = 1.0;
for (int i = 0; i < 10; i++) {
float r = 0.01 + 0.1 * float(i);
vec3 rd = n * r;
vec3 sp = rd + p;
float d;
if (sdBox(sp, vec3(1.0)) <= 0.0) {
d = mapsdf(sp, rd);
}
else {
vec3 sampleBorder = clamp(sp, vec3(-1.0), vec3(1.0));
float phi = mapsdf2(sampleBorder, rd);
float dd = 0.1;
float grad_x = mapsdf2(sampleBorder + vec3(dd, 0, 0), rd) - phi;
float grad_y = mapsdf2(sampleBorder + vec3(0, dd, 0), rd) - phi;
vec3 grad = vec3(grad_x, grad_y, 1.0);
vec3 endpoint = sampleBorder - normalize(grad) * phi;
d = distance(endpoint, sp);
}
occ += (r - d) * sca;
sca *= 0.85;
}
return clamp(1.0 - occ / (3.14), 0.0, 1.0);
}

View file

@ -1934,7 +1934,7 @@ class ArmoryExporter:
# Run
krom_location, krom_path = arm.utils.krom_paths()
krom_dir = sdfgen_path + '/krom'
krom_res = sdfgen_path + '/krom-resources'
krom_res = sdfgen_path + '/krom'
subprocess.check_output([krom_path, krom_dir, krom_res, '--nosound', '--nowindow'])
# Copy output
sdf_path = fp.replace('/mesh_', '/sdf_')

File diff suppressed because one or more lines are too long