Begin probe pass
This commit is contained in:
parent
3dc19f46fc
commit
0d5ddf4eef
40
Shaders/probe_planar/probe_planar.frag.glsl
Normal file
40
Shaders/probe_planar/probe_planar.frag.glsl
Normal 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);
|
||||
}
|
33
Shaders/probe_planar/probe_planar.json
Normal file
33
Shaders/probe_planar/probe_planar.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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")
|
||||
|
|
|
@ -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'] = []
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in a new issue