Begin probe pass

This commit is contained in:
luboslenco 2018-10-01 22:01:03 +02:00
parent 3dc19f46fc
commit 0d5ddf4eef
5 changed files with 102 additions and 3 deletions

View file

@ -0,0 +1,40 @@
#version 450
#include "compiled.inc"
#include "std/gbuffer.glsl"
uniform sampler2D tex;
// // uniform sampler2D gbufferD;
// uniform sampler2D gbuffer0;
// uniform sampler2D gbuffer1;
// #ifdef _gbuffer2direct
// uniform sampler2D gbuffer2;
// #endif
// uniform mat4 invVP;
// uniform vec3 eye;
in vec4 wvpposition;
out vec4 fragColor;
void main() {
vec2 texCoord = wvpposition.xy / wvpposition.w;
texCoord = texCoord * 0.5 + 0.5;
#ifdef _InvY
texCoord.y = 1.0 - texCoord.y;
#endif
fragColor.rgb = texture(tex, texCoord).rgb;
// vec4 g0 = texture(gbuffer0, texCoord); // Normal.xy, metallic/roughness, depth
// vec4 g1 = texture(gbuffer1, texCoord); // Basecolor.rgb, spec/occ
// float depth = (1.0 - g0.a) * 2.0 - 1.0;
// vec3 n;
// n.z = 1.0 - abs(g0.x) - abs(g0.y);
// n.xy = n.z >= 0.0 ? g0.xy : octahedronWrap(g0.xy);
// n = normalize(n);
// vec3 p = getPos2(invVP, depth, texCoord);
// vec2 metrough = unpackFloat(g0.b);
// vec3 v = normalize(eye - p);
}

View file

@ -0,0 +1,33 @@
{
"contexts": [
{
"name": "probe_planar",
"depth_write": false,
"color_write_alpha": false,
"compare_mode": "less",
"cull_mode": "clockwise",
"blend_source": "blend_one",
"blend_destination": "blend_one",
"blend_operation": "add",
"alpha_blend_source": "blend_one",
"alpha_blend_destination": "blend_one",
"alpha_blend_operation": "add",
"links": [
{
"name": "LVWVP",
"link": "_worldViewProjectionMatrix"
},
{
"name": "eye",
"link": "_cameraPosition"
},
{
"name": "invVP",
"link": "_inverseViewProjectionMatrix"
}
],
"vertex_shader": "../include/pass_light_volume.vert.glsl",
"fragment_shader": "probe_planar.frag.glsl"
}
]
}

View file

@ -155,6 +155,10 @@ class RenderPathDeferred {
path.loadShader("shader_datas/deferred_light/deferred_light");
path.loadShader("shader_datas/deferred_light_quad/deferred_light_quad");
#if rp_probes
path.loadShader("shader_datas/probe_planar/probe_planar");
#end
#if ((rp_ssgi == "RTGI") || (rp_ssgi == "RTAO"))
{
path.loadShader("shader_datas/ssgi_pass/ssgi_pass");
@ -591,6 +595,25 @@ class RenderPathDeferred {
path.drawShader("shader_datas/deferred_indirect/deferred_indirect");
}
#if rp_probes
if (iron.Scene.active.camera.renderTarget == null) {
// path.bindTarget("_main", "gbufferD");
// path.bindTarget("gbuffer0", "gbuffer0");
// path.bindTarget("gbuffer1", "gbuffer1");
// #if rp_gbuffer2_direct
// path.bindTarget("gbuffer2", "gbuffer2");
// #end
// TODO: cull
for (p in iron.Scene.active.probes) {
path.setTarget("tex");
path.bindTarget(p.raw.name, "tex");
path.drawVolume(p, "shader_datas/probe_planar/probe_planar");
}
}
#end
// Direct
var lights = iron.Scene.active.lights;
#if (rp_gi == "Voxel GI")

View file

@ -2180,9 +2180,8 @@ class ArmoryExporter:
assets.add(arm.utils.asset_path(sound.filepath))
for o in self.speakerArray.items():
self.export_speaker(o)
if bpy.app.version >= (2, 80, 1):
if bpy.app.version >= (2, 80, 1) and len(bpy.data.lightprobes) > 0:
self.output['probe_datas'] = []
assets.add_khafile_def('rp_probes')
for o in self.probeArray.items():
self.export_probe(o)
self.output['mesh_datas'] = []

View file

@ -289,7 +289,11 @@ def build():
assets.add_shader_pass('deferred_indirect')
assets.add_shader_pass('deferred_light')
assets.add_shader_pass('deferred_light_quad')
if bpy.app.version >= (2, 80, 1) and len(bpy.data.lightprobes) > 0:
assets.add_khafile_def('rp_probes')
assets.add_shader_pass('probe_planar')
if rpdat.rp_volumetriclight:
assets.add_khafile_def('rp_volumetriclight')
assets.add_shader_pass('volumetric_light_quad')