forked from LeenkxTeam/LNXSDK
Update leenkx/Sources/leenkx/renderpath/RenderPathDeferred.hx
This commit is contained in:
@ -15,6 +15,11 @@ class RenderPathDeferred {
|
|||||||
static var bloomUpsampler: Upsampler;
|
static var bloomUpsampler: Upsampler;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if (rp_ssgi == "SSGI")
|
||||||
|
static var ssgitex = "singleb";
|
||||||
|
static var ssgitexb = "singleb";
|
||||||
|
#end
|
||||||
|
|
||||||
public static inline function setTargetMeshes() {
|
public static inline function setTargetMeshes() {
|
||||||
//Always keep the order of render targets the same as defined in compiled.inc
|
//Always keep the order of render targets the same as defined in compiled.inc
|
||||||
path.setTarget("gbuffer0", [
|
path.setTarget("gbuffer0", [
|
||||||
@ -57,12 +62,11 @@ class RenderPathDeferred {
|
|||||||
Inc.initGI("voxels");
|
Inc.initGI("voxels");
|
||||||
Inc.initGI("voxelsOut");
|
Inc.initGI("voxelsOut");
|
||||||
Inc.initGI("voxelsOutB");
|
Inc.initGI("voxelsOutB");
|
||||||
#if (lnx_voxelgi_shadows || rp_voxels == "Voxel GI")
|
#if (rp_voxels == "Voxel GI" || lnx_voxelgi_shadows)
|
||||||
Inc.initGI("voxelsSDF");
|
Inc.initGI("voxelsSDF");
|
||||||
Inc.initGI("voxelsSDFtmp");
|
Inc.initGI("voxelsSDFtmp");
|
||||||
#end
|
#end
|
||||||
#if (rp_voxels == "Voxel GI")
|
#if (rp_voxels == "Voxel GI")
|
||||||
Inc.initGI("voxelsLight");
|
|
||||||
Inc.initGI("voxels_diffuse");
|
Inc.initGI("voxels_diffuse");
|
||||||
Inc.initGI("voxels_specular");
|
Inc.initGI("voxels_specular");
|
||||||
#else
|
#else
|
||||||
@ -195,16 +199,26 @@ class RenderPathDeferred {
|
|||||||
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
|
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
|
||||||
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
||||||
}
|
}
|
||||||
|
#elseif (rp_ssgi == "SSGI")
|
||||||
|
{
|
||||||
|
path.loadShader("shader_datas/ssgi_pass/ssgi_pass");
|
||||||
|
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
|
||||||
|
path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
||||||
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if ((rp_ssgi != "Off") || rp_volumetriclight)
|
#if (rp_ssgi != "Off")
|
||||||
{
|
{
|
||||||
var t = new RenderTargetRaw();
|
var t = new RenderTargetRaw();
|
||||||
t.name = "singlea";
|
t.name = "singlea";
|
||||||
t.width = 0;
|
t.width = 0;
|
||||||
t.height = 0;
|
t.height = 0;
|
||||||
t.displayp = Inc.getDisplayp();
|
t.displayp = Inc.getDisplayp();
|
||||||
|
#if (rp_ssgi == "SSGI")
|
||||||
|
t.format = "RGBA32";
|
||||||
|
#else
|
||||||
t.format = "R8";
|
t.format = "R8";
|
||||||
|
#end
|
||||||
t.scale = Inc.getSuperSampling();
|
t.scale = Inc.getSuperSampling();
|
||||||
#if rp_ssgi_half
|
#if rp_ssgi_half
|
||||||
t.scale *= 0.5;
|
t.scale *= 0.5;
|
||||||
@ -216,6 +230,38 @@ class RenderPathDeferred {
|
|||||||
t.width = 0;
|
t.width = 0;
|
||||||
t.height = 0;
|
t.height = 0;
|
||||||
t.displayp = Inc.getDisplayp();
|
t.displayp = Inc.getDisplayp();
|
||||||
|
#if (rp_ssgi == "SSGI")
|
||||||
|
t.format = "RGBA32";
|
||||||
|
#else
|
||||||
|
t.format = "R8";
|
||||||
|
#end
|
||||||
|
t.scale = Inc.getSuperSampling();
|
||||||
|
#if rp_ssgi_half
|
||||||
|
t.scale *= 0.5;
|
||||||
|
#end
|
||||||
|
path.createRenderTarget(t);
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if rp_volumetriclight
|
||||||
|
{
|
||||||
|
var t = new RenderTargetRaw();
|
||||||
|
t.name = "volumetrica";
|
||||||
|
t.width = 0;
|
||||||
|
t.height = 0;
|
||||||
|
t.displayp = Inc.getDisplayp();
|
||||||
|
t.format = "R8";
|
||||||
|
t.scale = Inc.getSuperSampling();
|
||||||
|
#if rp_ssgi_half // Do we keep this ?
|
||||||
|
t.scale *= 0.5;
|
||||||
|
#end
|
||||||
|
path.createRenderTarget(t);
|
||||||
|
|
||||||
|
var t = new RenderTargetRaw();
|
||||||
|
t.name = "volumetricb";
|
||||||
|
t.width = 0;
|
||||||
|
t.height = 0;
|
||||||
|
t.displayp = Inc.getDisplayp();
|
||||||
t.format = "R8";
|
t.format = "R8";
|
||||||
t.scale = Inc.getSuperSampling();
|
t.scale = Inc.getSuperSampling();
|
||||||
#if rp_ssgi_half
|
#if rp_ssgi_half
|
||||||
@ -358,6 +404,7 @@ class RenderPathDeferred {
|
|||||||
path.loadShader("shader_datas/ssrefr_pass/ssrefr_pass");
|
path.loadShader("shader_datas/ssrefr_pass/ssrefr_pass");
|
||||||
path.loadShader("shader_datas/copy_pass/copy_pass");
|
path.loadShader("shader_datas/copy_pass/copy_pass");
|
||||||
|
|
||||||
|
path.createDepthBuffer("refraction", "DEPTH24");
|
||||||
// holds background depth
|
// holds background depth
|
||||||
var t = new RenderTargetRaw();
|
var t = new RenderTargetRaw();
|
||||||
t.name = "gbufferD1";
|
t.name = "gbufferD1";
|
||||||
@ -473,13 +520,6 @@ class RenderPathDeferred {
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if rp_ssrefr
|
|
||||||
{
|
|
||||||
path.setTarget("gbuffer_refraction");
|
|
||||||
path.clearTarget(0xffffff00);
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
RenderPathCreator.setTargetMeshes();
|
RenderPathCreator.setTargetMeshes();
|
||||||
|
|
||||||
#if rp_dynres
|
#if rp_dynres
|
||||||
@ -524,30 +564,16 @@ class RenderPathDeferred {
|
|||||||
path.drawShader("shader_datas/downsample_depth/downsample_depth");
|
path.drawShader("shader_datas/downsample_depth/downsample_depth");
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if ((rp_ssgi == "RTGI") || (rp_ssgi == "RTAO"))
|
#if (rp_shadowmap)
|
||||||
{
|
// atlasing is exclusive for now
|
||||||
if (leenkx.data.Config.raw.rp_ssgi != false) {
|
#if lnx_shadowmap_atlas
|
||||||
path.setTarget("singlea");
|
Inc.drawShadowMapAtlas();
|
||||||
#if rp_ssgi_half
|
|
||||||
path.bindTarget("half", "gbufferD");
|
|
||||||
#else
|
#else
|
||||||
path.bindTarget("_main", "gbufferD");
|
Inc.drawShadowMap();
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.drawShader("shader_datas/ssgi_pass/ssgi_pass");
|
|
||||||
|
|
||||||
path.setTarget("singleb");
|
#if (rp_ssgi == "SSAO")
|
||||||
path.bindTarget("singlea", "tex");
|
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
|
|
||||||
|
|
||||||
path.setTarget("singlea");
|
|
||||||
path.bindTarget("singleb", "tex");
|
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#elseif (rp_ssgi == "SSAO")
|
|
||||||
{
|
{
|
||||||
if (leenkx.data.Config.raw.rp_ssgi != false) {
|
if (leenkx.data.Config.raw.rp_ssgi != false) {
|
||||||
path.setTarget("singlea");
|
path.setTarget("singlea");
|
||||||
@ -566,15 +592,43 @@ class RenderPathDeferred {
|
|||||||
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elseif (rp_ssgi == "SSGI")
|
||||||
|
{
|
||||||
|
if (leenkx.data.Config.raw.rp_ssgi != false) {
|
||||||
|
path.setTarget("singlea");
|
||||||
|
path.bindTarget("_main", "gbufferD");
|
||||||
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
|
path.bindTarget("gbuffer1", "gbuffer1");
|
||||||
|
#if rp_gbuffer_emission
|
||||||
|
{
|
||||||
|
path.bindTarget("gbuffer_emission", "gbufferEmission");
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
#if rp_gbuffer2
|
||||||
|
path.bindTarget("gbuffer2", "sveloc");
|
||||||
|
#end
|
||||||
|
#if rp_shadowmap
|
||||||
|
{
|
||||||
|
#if lnx_shadowmap_atlas
|
||||||
|
Inc.bindShadowMapAtlas();
|
||||||
|
#else
|
||||||
|
Inc.bindShadowMap();
|
||||||
|
#end
|
||||||
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if (rp_shadowmap)
|
path.drawShader("shader_datas/ssgi_pass/ssgi_pass");
|
||||||
// atlasing is exclusive for now
|
path.setTarget("singleb");
|
||||||
#if lnx_shadowmap_atlas
|
path.bindTarget("singlea", "tex");
|
||||||
Inc.drawShadowMapAtlas();
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
#else
|
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
|
||||||
Inc.drawShadowMap();
|
|
||||||
#end
|
path.setTarget("singlea");
|
||||||
|
path.bindTarget("singleb", "tex");
|
||||||
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
|
path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
|
||||||
|
}
|
||||||
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
// Voxels
|
// Voxels
|
||||||
@ -587,9 +641,6 @@ class RenderPathDeferred {
|
|||||||
|
|
||||||
if (iron.RenderPath.pre_clear == true)
|
if (iron.RenderPath.pre_clear == true)
|
||||||
{
|
{
|
||||||
#if (rp_voxels == "Voxel GI")
|
|
||||||
path.clearImage("voxelsLight", 0x00000000);
|
|
||||||
#end
|
|
||||||
path.clearImage("voxels", 0x00000000);
|
path.clearImage("voxels", 0x00000000);
|
||||||
path.clearImage("voxelsOut", 0x00000000);
|
path.clearImage("voxelsOut", 0x00000000);
|
||||||
path.clearImage("voxelsOutB", 0x00000000);
|
path.clearImage("voxelsOutB", 0x00000000);
|
||||||
@ -601,22 +652,26 @@ class RenderPathDeferred {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if (rp_voxels == "Voxel GI")
|
|
||||||
path.clearImage("voxelsLight", 0x00000000);
|
|
||||||
#end
|
|
||||||
path.clearImage("voxels", 0x00000000);
|
path.clearImage("voxels", 0x00000000);
|
||||||
Inc.computeVoxelsOffsetPrev();
|
Inc.computeVoxelsOffsetPrev();
|
||||||
}
|
}
|
||||||
|
|
||||||
path.setTarget("");
|
path.setTarget("");
|
||||||
|
path.bindTarget("voxels", "voxels");
|
||||||
|
#if rp_shadowmap
|
||||||
|
{
|
||||||
|
#if lnx_shadowmap_atlas
|
||||||
|
Inc.bindShadowMapAtlas();
|
||||||
|
#else
|
||||||
|
Inc.bindShadowMap();
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
var res = iron.RenderPath.getVoxelRes();
|
var res = iron.RenderPath.getVoxelRes();
|
||||||
path.setViewport(res, res);
|
path.setViewport(res, res);
|
||||||
|
|
||||||
path.bindTarget("voxels", "voxels");
|
|
||||||
path.drawMeshes("voxel");
|
path.drawMeshes("voxel");
|
||||||
#if (rp_voxels == "Voxel GI")
|
|
||||||
Inc.computeVoxelsLight();
|
|
||||||
#end
|
|
||||||
|
|
||||||
Inc.computeVoxelsTemporal();
|
Inc.computeVoxelsTemporal();
|
||||||
|
|
||||||
@ -632,6 +687,10 @@ class RenderPathDeferred {
|
|||||||
#else
|
#else
|
||||||
path.clearImage("voxels_ao", 0x00000000);
|
path.clearImage("voxels_ao", 0x00000000);
|
||||||
#end
|
#end
|
||||||
|
#if lnx_voxelgi_shadows
|
||||||
|
path.bindTarget("voxelsOut", "voxels");
|
||||||
|
path.bindTarget("voxelsSDF", "voxelsSDF");
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
@ -767,15 +826,9 @@ class RenderPathDeferred {
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if (rp_translucency && !rp_ssrefr)
|
|
||||||
{
|
|
||||||
Inc.drawTranslucency("tex");
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#if rp_volumetriclight
|
#if rp_volumetriclight
|
||||||
{
|
{
|
||||||
path.setTarget("singlea");
|
path.setTarget("volumetrica");
|
||||||
path.bindTarget("_main", "gbufferD");
|
path.bindTarget("_main", "gbufferD");
|
||||||
#if lnx_shadowmap_atlas
|
#if lnx_shadowmap_atlas
|
||||||
Inc.bindShadowMapAtlas();
|
Inc.bindShadowMapAtlas();
|
||||||
@ -784,85 +837,16 @@ class RenderPathDeferred {
|
|||||||
#end
|
#end
|
||||||
path.drawShader("shader_datas/volumetric_light/volumetric_light");
|
path.drawShader("shader_datas/volumetric_light/volumetric_light");
|
||||||
|
|
||||||
path.setTarget("singleb");
|
path.setTarget("volumetricb");
|
||||||
path.bindTarget("singlea", "tex");
|
path.bindTarget("volumetrica", "tex");
|
||||||
path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
|
path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
|
||||||
|
|
||||||
path.setTarget("tex");
|
path.setTarget("tex");
|
||||||
path.bindTarget("singleb", "tex");
|
path.bindTarget("volumetricb", "tex");
|
||||||
path.drawShader("shader_datas/blur_bilat_blend_pass/blur_bilat_blend_pass_y");
|
path.drawShader("shader_datas/blur_bilat_blend_pass/blur_bilat_blend_pass_y");
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if rp_bloom
|
|
||||||
{
|
|
||||||
inline Inc.drawBloom("tex", bloomDownsampler, bloomUpsampler);
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#if rp_sss
|
|
||||||
{
|
|
||||||
#if (!kha_opengl)
|
|
||||||
path.setDepthFrom("tex", "gbuffer1"); // Unbind depth so we can read it
|
|
||||||
#end
|
|
||||||
|
|
||||||
path.setTarget("buf");
|
|
||||||
path.bindTarget("tex", "tex");
|
|
||||||
path.bindTarget("_main", "gbufferD");
|
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.drawShader("shader_datas/sss_pass/sss_pass_x");
|
|
||||||
|
|
||||||
path.setTarget("tex");
|
|
||||||
path.bindTarget("buf", "tex");
|
|
||||||
path.bindTarget("_main", "gbufferD");
|
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.drawShader("shader_datas/sss_pass/sss_pass_y");
|
|
||||||
|
|
||||||
#if (!kha_opengl)
|
|
||||||
path.setDepthFrom("tex", "gbuffer0");
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#if rp_ssrefr
|
|
||||||
{
|
|
||||||
if (leenkx.data.Config.raw.rp_ssrefr != false)
|
|
||||||
{
|
|
||||||
//save depth
|
|
||||||
path.setTarget("gbufferD1");
|
|
||||||
path.bindTarget("_main", "tex");
|
|
||||||
path.drawShader("shader_datas/copy_pass/copy_pass");
|
|
||||||
|
|
||||||
//save background color
|
|
||||||
path.setTarget("refr");
|
|
||||||
path.bindTarget("tex", "tex");
|
|
||||||
path.drawShader("shader_datas/copy_pass/copy_pass");
|
|
||||||
|
|
||||||
path.setTarget("gbuffer0", ["tex", "gbuffer_refraction"]);
|
|
||||||
|
|
||||||
#if (rp_voxels != "Off")
|
|
||||||
{
|
|
||||||
path.bindTarget("voxelsOut", "voxels");
|
|
||||||
path.bindTarget("voxelsSDF", "voxelsSDF");
|
|
||||||
path.bindTarget("gbuffer2", "gbuffer2");
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
path.drawMeshes("refraction");
|
|
||||||
|
|
||||||
path.setTarget("tex");
|
|
||||||
path.bindTarget("tex", "tex");
|
|
||||||
path.bindTarget("refr", "tex1");
|
|
||||||
path.bindTarget("_main", "gbufferD");
|
|
||||||
path.bindTarget("gbufferD1", "gbufferD1");
|
|
||||||
path.bindTarget("gbuffer0", "gbuffer0");
|
|
||||||
path.bindTarget("gbuffer_refraction", "gbuffer_refraction");
|
|
||||||
|
|
||||||
path.drawShader("shader_datas/ssrefr_pass/ssrefr_pass");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#if rp_ssr
|
#if rp_ssr
|
||||||
{
|
{
|
||||||
if (leenkx.data.Config.raw.rp_ssr != false) {
|
if (leenkx.data.Config.raw.rp_ssr != false) {
|
||||||
@ -907,6 +891,87 @@ class RenderPathDeferred {
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if rp_sss
|
||||||
|
{
|
||||||
|
#if (!kha_opengl)
|
||||||
|
path.setDepthFrom("tex", "gbuffer1"); // Unbind depth so we can read it
|
||||||
|
#end
|
||||||
|
|
||||||
|
path.setTarget("buf");
|
||||||
|
path.bindTarget("tex", "tex");
|
||||||
|
path.bindTarget("_main", "gbufferD");
|
||||||
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
|
path.drawShader("shader_datas/sss_pass/sss_pass_x");
|
||||||
|
|
||||||
|
path.setTarget("tex");
|
||||||
|
path.bindTarget("buf", "tex");
|
||||||
|
path.bindTarget("_main", "gbufferD");
|
||||||
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
|
path.drawShader("shader_datas/sss_pass/sss_pass_y");
|
||||||
|
|
||||||
|
#if (!kha_opengl)
|
||||||
|
path.setDepthFrom("tex", "gbuffer0");
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if (rp_translucency && !rp_ssrefr)
|
||||||
|
{
|
||||||
|
Inc.drawTranslucency("tex");
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if rp_ssrefr
|
||||||
|
{
|
||||||
|
if (leenkx.data.Config.raw.rp_ssrefr != false)
|
||||||
|
{
|
||||||
|
//save depth
|
||||||
|
path.setTarget("gbufferD1");
|
||||||
|
path.bindTarget("_main", "tex");
|
||||||
|
path.drawShader("shader_datas/copy_pass/copy_pass");
|
||||||
|
|
||||||
|
//save background color
|
||||||
|
path.setTarget("refr");
|
||||||
|
path.bindTarget("tex", "tex");
|
||||||
|
path.drawShader("shader_datas/copy_pass/copy_pass");
|
||||||
|
|
||||||
|
path.setTarget("gbuffer0", ["tex", "gbuffer_refraction"]);
|
||||||
|
|
||||||
|
#if rp_shadowmap
|
||||||
|
{
|
||||||
|
#if lnx_shadowmap_atlas
|
||||||
|
Inc.bindShadowMapAtlas();
|
||||||
|
#else
|
||||||
|
Inc.bindShadowMap();
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if (rp_voxels != "Off")
|
||||||
|
{
|
||||||
|
path.bindTarget("voxelsOut", "voxels");
|
||||||
|
path.bindTarget("voxelsSDF", "voxelsSDF");
|
||||||
|
#if rp_gbuffer2
|
||||||
|
path.bindTarget("gbuffer2", "gbuffer2");
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
path.drawMeshes("refraction");
|
||||||
|
|
||||||
|
path.setTarget("tex");
|
||||||
|
path.bindTarget("tex", "tex");
|
||||||
|
path.bindTarget("refr", "tex1");
|
||||||
|
path.bindTarget("_main", "gbufferD");
|
||||||
|
path.bindTarget("gbufferD1", "gbufferD1");
|
||||||
|
path.bindTarget("gbuffer0", "gbuffer0");
|
||||||
|
path.bindTarget("gbuffer_refraction", "gbuffer_refraction");
|
||||||
|
|
||||||
|
path.drawShader("shader_datas/ssrefr_pass/ssrefr_pass");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
#if ((rp_motionblur == "Camera") || (rp_motionblur == "Object"))
|
#if ((rp_motionblur == "Camera") || (rp_motionblur == "Object"))
|
||||||
{
|
{
|
||||||
if (leenkx.data.Config.raw.rp_motionblur != false) {
|
if (leenkx.data.Config.raw.rp_motionblur != false) {
|
||||||
@ -971,6 +1036,12 @@ class RenderPathDeferred {
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if rp_bloom
|
||||||
|
{
|
||||||
|
inline Inc.drawBloom("tex", bloomDownsampler, bloomUpsampler);
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
#if (rp_supersampling == 4)
|
#if (rp_supersampling == 4)
|
||||||
var framebuffer = "buf";
|
var framebuffer = "buf";
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user