| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635 |
- // Reference: https://github.com/armory3d/armory_docs/blob/master/dev/renderpath.md
- package arm.renderpath;
- import iron.RenderPath;
- class RenderPathCreator {
- static var path:RenderPath;
- public static function get():RenderPath {
- path = new RenderPath();
- init();
- path.commands = commands;
- return path;
- }
- #if (rp_gi != "Off")
- static var voxels = "voxels";
- static var voxelsLast = "voxels";
- public static var voxelFrame = 0;
- public static var voxelFreq = 6; // Revoxelizing frequency
- #end
- #if (rp_renderer == "Forward")
- static function init() {
- #if (rp_shadowmap && kha_webgl)
- initEmpty();
- #end
-
- #if (rp_background == "World")
- {
- path.loadShader("shader_datas/world_pass/world_pass");
- }
- #end
- #if rp_render_to_texture
- {
- path.createDepthBuffer("main", "DEPTH24");
- var t = new RenderTargetRaw();
- t.name = "lbuf";
- t.width = 0;
- t.height = 0;
- t.format = getHdrFormat();
- t.displayp = getDisplayp();
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- path.createRenderTarget(t);
- #if rp_compositornodes
- {
- path.loadShader("shader_datas/compositor_pass/compositor_pass");
- }
- #else
- {
- path.loadShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- #if (rp_supersampling == 4)
- {
- var t = new RenderTargetRaw();
- t.name = "buf";
- t.width = 0;
- t.height = 0;
- t.format = 'RGBA32';
- t.displayp = getDisplayp();
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- path.createRenderTarget(t);
- path.loadShader("shader_datas/supersample_resolve/supersample_resolve");
- }
- #end
- }
- #end
- #if (rp_translucency)
- {
- initTranslucency();
- }
- #end
- #if (rp_gi != "Off")
- {
- initGI();
- #if arm_voxelgi_temporal
- {
- initGI("voxelsB");
- }
- #end
- }
- #end
- #if ((rp_antialiasing == "SMAA") || (rp_antialiasing == "TAA"))
- {
- var t = new RenderTargetRaw();
- t.name = "bufa";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA32";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bufb";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA32";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- path.loadShader("shader_datas/smaa_edge_detect/smaa_edge_detect");
- path.loadShader("shader_datas/smaa_blend_weight/smaa_blend_weight");
- path.loadShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend");
- #if (rp_antialiasing == "TAA")
- {
- path.loadShader("shader_datas/taa_pass/taa_pass");
- }
- #end
- #end
- #if rp_volumetriclight
- {
- path.loadShader("shader_datas/volumetric_light_quad/volumetric_light_quad");
- path.loadShader("shader_datas/volumetric_light/volumetric_light");
- path.loadShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
- path.loadShader("shader_datas/blur_bilat_pass/blur_bilat_pass_y_blend");
- {
- var t = new RenderTargetRaw();
- t.name = "bufvola";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "R8";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bufvolb";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "R8";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- }
- #end
- #if rp_bloom
- {
- var t = new RenderTargetRaw();
- t.name = "bloomtex";
- t.width = 0;
- t.height = 0;
- t.scale = 0.25;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bloomtex2";
- t.width = 0;
- t.height = 0;
- t.scale = 0.25;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- {
- path.loadShader("shader_datas/bloom_pass/bloom_pass");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y_blend");
- }
- #end
- }
- static function commands() {
- #if rp_shadowmap
- {
- var faces = path.getLamp(path.currentLampIndex).data.raw.shadowmap_cube ? 6 : 1;
- for (i in 0...faces) {
- if (faces > 1) path.currentFace = i;
- path.setTarget(getShadowMap());
- path.clearTarget(null, 1.0);
- path.drawMeshes("shadowmap");
- }
- path.currentFace = -1;
- }
- #end
- #if (rp_gi != "Off")
- {
- var voxelize = path.voxelize();
- #if arm_voxelgi_temporal
- voxelize = ++voxelFrame % voxelFreq == 0;
- if (voxelize) {
- voxels = voxels == "voxels" ? "voxelsB" : "voxels";
- voxelsLast = voxels == "voxels" ? "voxelsB" : "voxels";
- }
- #end
- if (voxelize) {
- path.clearImage(voxels, 0x00000000);
- path.setTarget("");
- var res = getVoxelRes();
- path.setViewport(res, res);
- path.bindTarget(voxels, "voxels");
- #if rp_shadowmap
- {
- bindShadowMap();
- }
- #end
- path.drawMeshes("voxel");
- path.generateMipmaps(voxels);
- }
- }
- #end
- #if rp_render_to_texture
- {
- path.setTarget("lbuf");
- }
- #else
- {
- path.setTarget("");
- }
- #end
- #if (rp_background == "Clear")
- {
- path.clearTarget(-1, 1.0);
- }
- #else
- {
- path.clearTarget(null, 1.0);
- }
- #end
- #if rp_depthprepass
- {
- path.drawMeshes("depth");
- }
- #end
- #if rp_shadowmap
- {
- bindShadowMap();
- }
- #end
- #if (rp_gi != "Off")
- {
- path.bindTarget(voxels, "voxels");
- #if arm_voxelgi_temporal
- {
- path.bindTarget(voxelsLast, "voxelsLast");
- }
- #end
- }
- #end
- function drawMeshes() {
- path.drawMeshes("mesh");
- #if (rp_background == "World")
- {
- path.drawSkydome("shader_datas/world_pass/world_pass");
- }
- #end
- #if rp_translucency
- {
- drawTranslucency("lbuf");
- }
- #end
- }
- #if rp_stereo
- {
- path.drawStereo(drawMeshes);
- }
- #else
- {
- drawMeshes();
- }
- #end
- #if rp_render_to_texture
- {
- #if rp_volumetriclight
- {
- path.setTarget("bufvola");
- path.bindTarget("_main", "gbufferD");
- bindShadowMap();
- if (path.lampIsSun()) {
- path.drawShader("shader_datas/volumetric_light_quad/volumetric_light_quad");
- }
- else {
- path.drawLampVolume("shader_datas/volumetric_light/volumetric_light");
- }
- path.setTarget("bufvolb");
- path.bindTarget("bufvola", "tex");
- path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
- path.setTarget("lbuf");
- path.bindTarget("bufvolb", "tex");
- path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_y_blend");
- }
- #end
-
- #if rp_bloom
- {
- path.setTarget("bloomtex");
- path.bindTarget("lbuf", "tex");
- path.drawShader("shader_datas/bloom_pass/bloom_pass");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("lbuf");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y_blend");
- }
- #end
- #if (rp_supersampling == 4)
- var framebuffer = "buf";
- #else
- var framebuffer = "";
- #end
- #if ((rp_antialiasing == "Off") || (rp_antialiasing == "FXAA"))
- {
- path.setTarget(framebuffer);
- }
- #else
- {
- path.setTarget("buf");
- }
- #end
- path.bindTarget("lbuf", "tex");
- #if rp_compositordepth
- {
- path.bindTarget("_main", "gbufferD");
- }
- #end
- #if rp_compositornodes
- {
- path.drawShader("shader_datas/compositor_pass/compositor_pass");
- }
- #else
- {
- path.drawShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- #if ((rp_antialiasing == "SMAA") || (rp_antialiasing == "TAA"))
- {
- path.setTarget("bufa");
- path.clearTarget(0x00000000);
- path.bindTarget("lbuf", "colorTex");
- path.drawShader("shader_datas/smaa_edge_detect/smaa_edge_detect");
- path.setTarget("bufb");
- path.clearTarget(0x00000000);
- path.bindTarget("bufa", "edgesTex");
- path.drawShader("shader_datas/smaa_blend_weight/smaa_blend_weight");
- // #if (rp_antialiasing == "TAA")
- // path.setTarget("bufa");
- // #else
- path.setTarget(framebuffer);
- // #end
- path.bindTarget("lbuf", "colorTex");
- path.bindTarget("bufb", "blendTex");
- // #if (rp_antialiasing == "TAA")
- // {
- // path.bindTarget("gbuffer2", "sveloc");
- // }
- // #end
- path.drawShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend");
- // #if (rp_antialiasing == "TAA")
- // {
- // path.setTarget(framebuffer);
- // path.bindTarget("bufa", "tex");
- // path.bindTarget("taa", "tex2");
- // path.bindTarget("gbuffer2", "sveloc");
- // path.drawShader("shader_datas/taa_pass/taa_pass");
- // path.setTarget("taa");
- // path.bindTarget("bufa", "tex");
- // path.drawShader("shader_datas/copy_pass/copy_pass");
- // }
- // #end
- }
- #end
- #if (rp_supersampling == 4)
- {
- var final = "";
- path.setTarget(final);
- path.bindTarget(framebuffer, "tex");
- path.drawShader("shader_datas/supersample_resolve/supersample_resolve");
- }
- #end
- }
- #end
- #if rp_overlays
- {
- path.clearTarget(null, 1.0);
- path.drawMeshes("overlay");
- }
- #end
- }
- #end
- #if (rp_renderer == "Deferred")
- static function init() {
- #if (rp_shadowmap && kha_webgl)
- initEmpty();
- #end
- #if (rp_background == "World")
- {
- path.loadShader("shader_datas/world_pass/world_pass");
- }
- #end
- #if (rp_translucency)
- {
- initTranslucency();
- }
- #end
- #if (rp_gi != "Off")
- {
- initGI();
- #if arm_voxelgi_temporal
- {
- initGI("voxelsB");
- }
- #end
- }
- #end
- {
- path.createDepthBuffer("main", "DEPTH24");
- var t = new RenderTargetRaw();
- t.name = "tex";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = getHdrFormat();
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- #if rp_autoexposure
- t.mipmaps = true;
- #end
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "buf";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = getHdrFormat();
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- {
- path.createDepthBuffer("main", "DEPTH24");
- var t = new RenderTargetRaw();
- t.name = "gbuffer0";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA64";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "gbuffer1";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA64";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- #if arm_veloc
- {
- var t = new RenderTargetRaw();
- t.name = "gbuffer2";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA64";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "taa";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA32";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- #end
- path.loadShader("shader_datas/deferred_indirect/deferred_indirect");
- path.loadShader("shader_datas/deferred_light/deferred_light");
- path.loadShader("shader_datas/deferred_light_quad/deferred_light_quad");
- #if ((rp_ssgi == "RTGI") || (rp_ssgi == "RTAO"))
- {
- path.loadShader("shader_datas/ssgi_pass/ssgi_pass");
- path.loadShader("shader_datas/ssgi_blur_pass/ssgi_blur_pass_x");
- path.loadShader("shader_datas/ssgi_blur_pass/ssgi_blur_pass_y");
- }
- #elseif (rp_ssgi == "SSAO")
- {
- path.loadShader("shader_datas/ssao_pass/ssao_pass");
- path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
- path.loadShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
- }
- #end
- #if ((rp_ssgi != "Off") || (rp_antialiasing == "SMAA") || (rp_antialiasing == "TAA"))
- {
- var t = new RenderTargetRaw();
- t.name = "bufa";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA32";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bufb";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA32";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- path.createRenderTarget(t);
- }
- #end
- #if rp_rendercapture
- {
- var t = new RenderTargetRaw();
- t.name = "capture";
- t.width = 0;
- t.height = 0;
- t.format = getRenderCaptureFormat();
- path.createRenderTarget(t);
- }
- #end
- #if rp_compositornodes
- {
- path.loadShader("shader_datas/compositor_pass/compositor_pass");
- }
- #end
- #if ((!rp_compositornodes) || (rp_antialiasing == "TAA") || (rp_rendercapture) || (rp_motionblur == "Camera") || (rp_motionblur == "Object"))
- {
- path.loadShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- #if ((rp_antialiasing == "SMAA") || (rp_antialiasing == "TAA"))
- {
- path.loadShader("shader_datas/smaa_edge_detect/smaa_edge_detect");
- path.loadShader("shader_datas/smaa_blend_weight/smaa_blend_weight");
- path.loadShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend");
- #if (rp_antialiasing == "TAA")
- {
- path.loadShader("shader_datas/taa_pass/taa_pass");
- }
- #end
- }
- #end
- #if (rp_supersampling == 4)
- {
- path.loadShader("shader_datas/supersample_resolve/supersample_resolve");
- }
- #end
- #if rp_volumetriclight
- {
- path.loadShader("shader_datas/volumetric_light_quad/volumetric_light_quad");
- path.loadShader("shader_datas/volumetric_light/volumetric_light");
- path.loadShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
- path.loadShader("shader_datas/blur_bilat_pass/blur_bilat_pass_y_blend");
- {
- var t = new RenderTargetRaw();
- t.name = "bufvola";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "R8";
- // var ss = getSuperSampling();
- t.scale = 0.5;
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bufvolb";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "R8";
- // var ss = getSuperSampling();
- t.scale = 0.5;
- path.createRenderTarget(t);
- }
- }
- #end
- #if rp_ocean
- {
- path.loadShader("shader_datas/water_pass/water_pass");
- }
- #end
- #if rp_bloom
- {
- var t = new RenderTargetRaw();
- t.name = "bloomtex";
- t.width = 0;
- t.height = 0;
- t.scale = 0.25;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "bloomtex2";
- t.width = 0;
- t.height = 0;
- t.scale = 0.25;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- {
- path.loadShader("shader_datas/bloom_pass/bloom_pass");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.loadShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y_blend");
- }
- #end
- #if rp_sss
- {
- path.loadShader("shader_datas/sss_pass/sss_pass_x");
- path.loadShader("shader_datas/sss_pass/sss_pass_y");
- }
- #end
- #if rp_ssr
- {
- path.loadShader("shader_datas/ssr_pass/ssr_pass");
- path.loadShader("shader_datas/blur_adaptive_pass/blur_adaptive_pass_x");
- path.loadShader("shader_datas/blur_adaptive_pass/blur_adaptive_pass_y3_blend");
-
- #if rp_ssr_half
- {
- var t = new RenderTargetRaw();
- t.name = "ssra";
- t.width = 0;
- t.height = 0;
- t.scale = 0.5;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "ssrb";
- t.width = 0;
- t.height = 0;
- t.scale = 0.5;
- t.format = getHdrFormat();
- path.createRenderTarget(t);
- }
- #end
- }
- #end
- #if ((rp_motionblur == "Camera") || (rp_motionblur == "Object"))
- {
- #if (rp_motionblur == "Camera")
- {
- path.loadShader("shader_datas/motion_blur_pass/motion_blur_pass");
- }
- #else
- {
- path.loadShader("shader_datas/motion_blur_veloc_pass/motion_blur_veloc_pass");
- }
- #end
- }
- #end
- #if rp_soft_shadows
- {
- path.loadShader("shader_datas/dilate_pass/dilate_pass_x");
- path.loadShader("shader_datas/dilate_pass/dilate_pass_y");
- path.loadShader("shader_datas/visibility_pass/visibility_pass");
- path.loadShader("shader_datas/blur_shadow_pass/blur_shadow_pass_x");
- path.loadShader("shader_datas/blur_shadow_pass/blur_shadow_pass_y");
- {
- var t = new RenderTargetRaw();
- t.name = "visa";
- t.width = 0;
- t.height = 0;
- t.format = 'R16';
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "visb";
- t.width = 0;
- t.height = 0;
- t.format = 'R16';
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "dist";
- t.width = 0;
- t.height = 0;
- t.format = 'R16';
- path.createRenderTarget(t);
- }
- }
- #end
- // Paint
- {
- path.createDepthBuffer("paintdb", "DEPTH16");
- var t = new RenderTargetRaw();
- t.name = "texpaint";
- t.width = 4096;
- t.height = 4096;
- t.format = 'RGBA32';
- t.depth_buffer = "paintdb";
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "texpaint_nor";
- t.width = 4096;
- t.height = 4096;
- t.format = 'RGBA32';
- path.createRenderTarget(t);
- }
- {
- var t = new RenderTargetRaw();
- t.name = "texpaint_pack";
- t.width = 4096;
- t.height = 4096;
- t.format = 'RGBA32';
- path.createRenderTarget(t);
- }
- //
- }
- static function drawShadowMap(l:iron.object.LampObject) {
- var faces = l.data.raw.shadowmap_cube ? 6 : 1;
- for (j in 0...faces) {
- if (faces > 1) path.currentFace = j;
- path.setTarget(getShadowMap());
- path.clearTarget(null, 1.0);
- path.drawMeshes("shadowmap");
- }
- path.currentFace = -1;
- // One lamp at a time for now, precompute all lamps for tiled
- #if rp_soft_shadows
- path.setTarget("visa"); // Merge using min blend
- bindShadowMap();
- path.drawShader("shader_datas/dilate_pass/dilate_pass_x");
- path.setTarget("visb");
- path.bindTarget("visa", "shadowMap");
- path.drawShader("shader_datas/dilate_pass/dilate_pass_y");
- path.setTarget("visa", ["dist"]);
- //if (i == 0) path.clearTarget(0x00000000);
- path.bindTarget("visb", "dilate");
- bindShadowMap();
- //path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/visibility_pass/visibility_pass");
-
- path.setTarget("visb");
- path.bindTarget("visa", "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("dist", "dist");
- path.drawShader("shader_datas/blur_shadow_pass/blur_shadow_pass_x");
- path.setTarget("visa");
- path.bindTarget("visb", "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("dist", "dist");
- path.drawShader("shader_datas/blur_shadow_pass/blur_shadow_pass_y");
- #end
- }
- static function commands() {
- // Paint
- if (arm.UITrait.depthDirty()) {
- path.setTarget("texpaint");
- path.clearTarget(null, 1.0);
- path.drawMeshes("depth"); // TODO: CHECK DEPTH EXPORT
- }
- if (arm.UITrait.paintDirty()) {
- path.setTarget("texpaint", ["texpaint_nor", "texpaint_pack"]);
- path.bindTarget("_paintdb", "paintdb");
- path.drawMeshes("paint");
- }
- //
- #if rp_dynres
- {
- DynamicResolutionScale.run(path);
- }
- #end
- #if arm_veloc
- {
- path.setTarget("gbuffer2");
- path.clearTarget(0xff000000);
- path.setTarget("gbuffer0", ["gbuffer1", "gbuffer2"]);
- }
- #else
- {
- path.setTarget("gbuffer0", ["gbuffer1"]);
- }
- #end
- #if (rp_background == "Clear")
- {
- path.clearTarget(-1, 1.0);
- }
- #else
- {
- path.clearTarget(null, 1.0);
- }
- #end
- // Paint
- path.bindTarget("texpaint", "texpaint");
- path.bindTarget("texpaint_nor", "texpaint_nor");
- path.bindTarget("texpaint_pack", "texpaint_pack");
- //
- path.drawMeshes("mesh");
- #if rp_decals
- {
- // path.setTarget("gbuffer0", ["gbuffer1"]);
- path.bindTarget("_main", "gbufferD");
- path.drawDecals("decal");
- }
- #end
- #if ((rp_ssgi == "RTGI") || (rp_ssgi == "RTAO"))
- {
- path.setTarget("bufa");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- #if ((rp_ssgi == "RTGI"))
- path.bindTarget("gbuffer1", "gbuffer1");
- #end
- path.drawShader("shader_datas/ssgi_pass/ssgi_pass");
- path.setTarget("bufb");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("bufa", "tex");
- path.drawShader("shader_datas/ssgi_blur_pass/ssgi_blur_pass_x");
- path.setTarget("bufa");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("bufb", "tex");
- path.drawShader("shader_datas/ssgi_blur_pass/ssgi_blur_pass_y");
- }
- #elseif (rp_ssgi == "SSAO")
- {
- path.setTarget("bufa");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/ssao_pass/ssao_pass");
- path.setTarget("bufb");
- path.bindTarget("bufa", "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_x");
- path.setTarget("bufa");
- path.bindTarget("bufb", "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/blur_edge_pass/blur_edge_pass_y");
- }
- #end
- // Voxels
- #if (rp_gi != "Off")
- {
- #if ((rp_shadowmap) && (rp_gi == "Voxel GI"))
- {
- if (path.lampCastShadow() && iron.Scene.active.lamps.length > 0) {
- drawShadowMap(iron.Scene.active.lamps[0]);
- }
- }
- #end
-
- var voxelize = path.voxelize();
- #if arm_voxelgi_temporal
- voxelize = ++voxelFrame % voxelFreq == 0;
- if (voxelize) {
- voxels = voxels == "voxels" ? "voxelsB" : "voxels";
- voxelsLast = voxels == "voxels" ? "voxelsB" : "voxels";
- }
- #end
- if (voxelize) {
- path.clearImage(voxels, 0x00000000);
- path.setTarget("");
- var res = getVoxelRes();
- path.setViewport(res, res);
- path.bindTarget(voxels, "voxels");
- #if ((rp_shadowmap) && (rp_gi == "Voxel GI"))
- {
- bindShadowMap();
- }
- #end
- path.drawMeshes("voxel");
- path.generateMipmaps(voxels);
- }
- }
- #end
- // Indirect
- path.setTarget("tex");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("gbuffer1", "gbuffer1");
- #if (rp_ssgi != "Off")
- {
- path.bindTarget("bufa", "ssaotex");
- }
- #end
- #if (rp_gi != "Off")
- {
- path.bindTarget(voxels, "voxels");
- #if arm_voxelgi_temporal
- {
- path.bindTarget(voxelsLast, "voxelsLast");
- }
- #end
- }
- #end
- path.drawShader("shader_datas/deferred_indirect/deferred_indirect");
- // Direct
- var lamps = iron.Scene.active.lamps;
- for (i in 0...lamps.length) {
- var l = lamps[i];
- if (!l.visible) continue;
- path.currentLampIndex = i;
- #if ((rp_shadowmap) && (rp_gi != "Voxel GI"))
- {
- if (path.lampCastShadow()) {
- drawShadowMap(l);
- }
- }
- #end
- path.setTarget("tex");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.bindTarget("gbuffer1", "gbuffer1");
- #if rp_shadowmap
- {
- if (path.lampCastShadow()) {
- #if rp_soft_shadows
- path.bindTarget("visa", "svisibility");
- #else
- bindShadowMap();
- #end
- }
- }
- #end
- #if ((rp_voxelgi_shadows) || (rp_voxelgi_refraction))
- {
- path.bindTarget(voxels, "voxels");
- }
- #end
- if (path.lampIsSun()) {
- path.drawShader("shader_datas/deferred_light_quad/deferred_light_quad");
- }
- else {
- path.drawLampVolume("shader_datas/deferred_light/deferred_light");
- }
- #if rp_volumetriclight
- {
- path.setTarget("bufvola");
- path.bindTarget("_main", "gbufferD");
- bindShadowMap();
- if (path.lampIsSun()) {
- path.drawShader("shader_datas/volumetric_light_quad/volumetric_light_quad");
- }
- else {
- path.drawLampVolume("shader_datas/volumetric_light/volumetric_light");
- }
- path.setTarget("bufvolb");
- path.bindTarget("bufvola", "tex");
- path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_x");
- path.setTarget("tex");
- path.bindTarget("bufvolb", "tex");
- path.drawShader("shader_datas/blur_bilat_pass/blur_bilat_pass_y_blend");
- }
- #end
- }
- path.currentLampIndex = 0;
- #if (rp_background == "World")
- {
- path.drawSkydome("shader_datas/world_pass/world_pass");
- }
- #end
- #if rp_ocean
- {
- path.setTarget("tex");
- path.bindTarget("_main", "gbufferD");
- path.drawShader("shader_datas/water_pass/water_pass");
- }
- #end
- #if rp_blending
- {
- path.drawMeshes("blend");
- }
- #end
- #if rp_translucency
- {
- drawTranslucency("tex");
- }
- #end
- #if rp_bloom
- {
- path.setTarget("bloomtex");
- path.bindTarget("tex", "tex");
- path.drawShader("shader_datas/bloom_pass/bloom_pass");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("bloomtex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y");
- path.setTarget("bloomtex2");
- path.bindTarget("bloomtex", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_x");
- path.setTarget("tex");
- path.bindTarget("bloomtex2", "tex");
- path.drawShader("shader_datas/blur_gaus_pass/blur_gaus_pass_y_blend");
- }
- #end
- #if rp_sss
- {
- path.setTarget("buf");
- path.bindTarget("tex", "tex");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer1", "gbuffer1");
- path.drawShader("shader_datas/sss_pass/sss_pass_x");
- path.setTarget("tex");
- // TODO: can not bind tex
- path.bindTarget("tex", "tex");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer1", "gbuffer1");
- path.drawShader("shader_datas/sss_pass/sss_pass_y");
- }
- #end
- #if rp_ssr
- {
- #if rp_ssr_half
- var targeta = "ssra";
- var targetb = "ssrb";
- #else
- var targeta = "buf";
- var targetb = "gbuffer1";
- #end
- path.setTarget(targeta);
- path.bindTarget("tex", "tex");
- path.bindTarget("_main", "gbufferD");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/ssr_pass/ssr_pass");
- path.setTarget(targetb);
- path.bindTarget(targeta, "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/blur_adaptive_pass/blur_adaptive_pass_x");
- path.setTarget("tex");
- path.bindTarget(targetb, "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- path.drawShader("shader_datas/blur_adaptive_pass/blur_adaptive_pass_y3_blend");
- }
- #end
- #if ((rp_motionblur == "Camera") || (rp_motionblur == "Object"))
- {
- path.setTarget("buf");
- path.bindTarget("tex", "tex");
- path.bindTarget("gbuffer0", "gbuffer0");
- #if (rp_motionblur == "Camera")
- {
- path.bindTarget("_main", "gbufferD");
- path.drawShader("shader_datas/motion_blur_pass/motion_blur_pass");
- }
- #else
- {
- path.bindTarget("gbuffer2", "sveloc");
- path.drawShader("shader_datas/motion_blur_veloc_pass/motion_blur_veloc_pass");
- }
- #end
- path.setTarget("tex");
- path.bindTarget("buf", "tex");
- path.drawShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- // We are just about to enter compositing, add more custom passes here
- // #if rp_custom_pass
- // {
- // }
- // #end
- // Begin compositor
- #if rp_autoexposure
- {
- path.generateMipmaps("tex");
- }
- #end
- #if ((rp_supersampling == 4) || (rp_rendercapture))
- var framebuffer = "buf";
- #else
- var framebuffer = "";
- #end
- #if ((rp_antialiasing == "Off") || (rp_antialiasing == "FXAA"))
- {
- path.setTarget(framebuffer);
- }
- #else
- {
- path.setTarget("buf");
- }
- #end
-
- path.bindTarget("tex", "tex");
- #if rp_compositordepth
- {
- path.bindTarget("_main", "gbufferD");
- }
- #end
- #if rp_compositornodes
- {
- path.drawShader("shader_datas/compositor_pass/compositor_pass");
- }
- #else
- {
- path.drawShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- // End compositor
- #if rp_overlays
- {
- path.clearTarget(null, 1.0);
- path.drawMeshes("overlay");
- }
- #end
- #if ((rp_antialiasing == "SMAA") || (rp_antialiasing == "TAA"))
- {
- path.setTarget("bufa");
- path.clearTarget(0x00000000);
- path.bindTarget("buf", "colorTex");
- path.drawShader("shader_datas/smaa_edge_detect/smaa_edge_detect");
- path.setTarget("bufb");
- path.clearTarget(0x00000000);
- path.bindTarget("bufa", "edgesTex");
- path.drawShader("shader_datas/smaa_blend_weight/smaa_blend_weight");
- #if (rp_antialiasing == "TAA")
- path.setTarget("bufa");
- #else
- path.setTarget(framebuffer);
- #end
- path.bindTarget("buf", "colorTex");
- path.bindTarget("bufb", "blendTex");
- #if (rp_antialiasing == "TAA")
- {
- path.bindTarget("gbuffer2", "sveloc");
- }
- #end
- path.drawShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend");
- #if (rp_antialiasing == "TAA")
- {
- path.setTarget(framebuffer);
- path.bindTarget("bufa", "tex");
- path.bindTarget("taa", "tex2");
- path.bindTarget("gbuffer2", "sveloc");
- path.drawShader("shader_datas/taa_pass/taa_pass");
- path.setTarget("taa");
- path.bindTarget("bufa", "tex");
- path.drawShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- }
- #end
- #if (rp_supersampling == 4)
- {
- #if rp_rendercapture
- // TODO: ss4 + capture broken
- var final = "capture";
- #else
- var final = "";
- #end
- path.setTarget(final);
- path.bindTarget(framebuffer, "tex");
- path.drawShader("shader_datas/supersample_resolve/supersample_resolve");
- }
- #elseif (rp_rendercapture)
- {
- path.setTarget("capture");
- path.bindTarget(framebuffer, "tex");
- path.drawShader("shader_datas/copy_pass/copy_pass");
- }
- #end
- }
- #end
- // #if (rp_renderer == "Deferred Plus")
- // static function init() {
- // }
- // static function commands() {
- // }
- // #end
- static function bindShadowMap() {
- var target = shadowMapName();
- if (target == "shadowMapCube") {
- #if kha_webgl
- // Bind empty map to non-cubemap sampler to keep webgl happy
- path.bindTarget("arm_empty", "shadowMap");
- #end
- path.bindTarget("shadowMapCube", "shadowMapCube");
- }
- else {
- #if kha_webgl
- // Bind empty map to cubemap sampler
- path.bindTarget("arm_empty_cube", "shadowMapCube");
- #end
- path.bindTarget("shadowMap", "shadowMap");
- }
- }
- static function shadowMapName():String {
- return path.getLamp(path.currentLampIndex).data.raw.shadowmap_cube ? "shadowMapCube" : "shadowMap";
- }
- static function getShadowMap():String {
- var target = shadowMapName();
- var rt = path.renderTargets.get(target);
- // Create shadowmap on the fly
- if (rt == null) {
- if (path.getLamp(path.currentLampIndex).data.raw.shadowmap_cube) {
- // Cubemap size
- var size = Std.int(path.getLamp(path.currentLampIndex).data.raw.shadowmap_size);
- var t = new RenderTargetRaw();
- t.name = target;
- t.width = size;
- t.height = size;
- t.format = "DEPTH16";
- t.is_cubemap = true;
- rt = path.createRenderTarget(t);
- }
- else { // Non-cube sm
- var sizew = path.getLamp(path.currentLampIndex).data.raw.shadowmap_size;
- var sizeh = sizew;
- #if arm_csm // Cascades - atlas on x axis
- sizew = sizeh * iron.object.LampObject.cascadeCount;
- #end
- var t = new RenderTargetRaw();
- t.name = target;
- t.width = sizew;
- t.height = sizeh;
- t.format = "DEPTH16";
- rt = path.createRenderTarget(t);
- }
- }
- return target;
- }
- #if (rp_shadowmap && kha_webgl)
- static function initEmpty() {
- // Bind empty when requested target is not found
- var tempty = new RenderTargetRaw();
- tempty.name = "arm_empty";
- tempty.width = 1;
- tempty.height = 1;
- tempty.format = "DEPTH16";
- path.createRenderTarget(tempty);
- var temptyCube = new RenderTargetRaw();
- temptyCube.name = "arm_empty_cube";
- temptyCube.width = 1;
- temptyCube.height = 1;
- temptyCube.format = "DEPTH16";
- temptyCube.is_cubemap = true;
- path.createRenderTarget(temptyCube);
- }
- #end
- #if (rp_translucency)
- static function initTranslucency() {
- path.createDepthBuffer("main", "DEPTH24");
- var t = new RenderTargetRaw();
- t.name = "accum";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA64";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- path.createRenderTarget(t);
- var t = new RenderTargetRaw();
- t.name = "revealage";
- t.width = 0;
- t.height = 0;
- t.displayp = getDisplayp();
- t.format = "RGBA64";
- var ss = getSuperSampling();
- if (ss != 1) t.scale = ss;
- t.depth_buffer = "main";
- path.createRenderTarget(t);
- path.loadShader("shader_datas/translucent_resolve/translucent_resolve");
- }
- static function drawTranslucency(target:String) {
- path.setTarget("accum");
- path.clearTarget(0xff000000);
- path.setTarget("revealage");
- path.clearTarget(0xffffffff);
- path.setTarget("accum", ["revealage"]);
- #if rp_shadowmap
- {
- bindShadowMap();
- }
- #end
- path.drawMeshes("translucent");
- #if rp_render_to_texture
- {
- path.setTarget(target);
- }
- #else
- {
- path.setTarget("");
- }
- #end
- path.bindTarget("accum", "gbuffer0");
- path.bindTarget("revealage", "gbuffer1");
- path.drawShader("shader_datas/translucent_resolve/translucent_resolve");
- }
- #end
- #if (rp_gi != "Off")
- static function initGI(tname = "voxels") {
- var t = new RenderTargetRaw();
- t.name = tname;
- #if (rp_gi == "Voxel AO")
- {
- t.format = "R8";
- }
- #elseif (rp_voxelgi_hdr)
- {
- t.format = "RGBA64";
- }
- #else
- {
- t.format = "RGBA32";
- }
- #end
- var res = getVoxelRes();
- var resZ = getVoxelResZ();
- t.width = res;
- t.height = res;
- t.depth = Std.int(res * resZ);
- t.is_image = true;
- t.mipmaps = true;
- path.createRenderTarget(t);
- }
- #end
- static inline function getShadowmapSize():Int {
- #if (rp_shadowmap_size == 512)
- return 512;
- #elseif (rp_shadowmap_size == 1024)
- return 1024;
- #elseif (rp_shadowmap_size == 2048)
- return 2048;
- #elseif (rp_shadowmap_size == 4096)
- return 4096;
- #elseif (rp_shadowmap_size == 8192)
- return 8192;
- #elseif (rp_shadowmap_size == 16384)
- return 16384;
- #else
- return 0;
- #end
- }
- static inline function getVoxelRes():Int {
- #if (rp_voxelgi_resolution == 512)
- return 512;
- #elseif (rp_voxelgi_resolution == 256)
- return 256;
- #elseif (rp_voxelgi_resolution == 128)
- return 128;
- #elseif (rp_voxelgi_resolution == 64)
- return 64;
- #elseif (rp_voxelgi_resolution == 32)
- return 32;
- #else
- return 0;
- #end
- }
- static inline function getVoxelResZ():Float {
- #if (rp_voxelgi_resolution_z == 1.0)
- return 1.0;
- #elseif (rp_voxelgi_resolution_z == 0.5)
- return 0.5;
- #elseif (rp_voxelgi_resolution_z == 0.25)
- return 0.25;
- #else
- return 0.0;
- #end
- }
- static inline function getSuperSampling():Float {
- #if (rp_supersampling == 1.5)
- return 1.5;
- #elseif (rp_supersampling == 2)
- return 2;
- #elseif (rp_supersampling == 4)
- return 4;
- #else
- return 1;
- #end
- }
- static inline function getHdrFormat():String {
- #if rp_hdr
- return "RGBA64";
- #else
- return "RGBA32";
- #end
- }
- static inline function getDisplayp():Null<Int> {
- #if (rp_resolution == 480)
- return 480;
- #elseif (rp_resolution == 720)
- return 720;
- #elseif (rp_resolution == 1080)
- return 1080;
- #elseif (rp_resolution == 1440)
- return 1440;
- #elseif (rp_resolution == 2160)
- return 2160;
- #else
- return null;
- #end
- }
- static inline function getRenderCaptureFormat():String {
- #if (rp_rendercapture_format == "8bit")
- return "RGBA32";
- #elseif (rp_rendercapture_format == "16bit")
- return "RGBA64";
- #elseif (rp_rendercapture_format == "32bit")
- return "RGBA128";
- #else
- return "RGBA32";
- #end
- }
- }
|