From 3f4134fc37fc64f46bb848c08e40d24e0c48ebce Mon Sep 17 00:00:00 2001 From: luboslenco Date: Fri, 6 Dec 2019 21:21:25 +0100 Subject: [PATCH] Bake up axis --- Shaders/raytrace/raytrace_bake_bent.cso | Bin 7008 -> 7060 bytes Shaders/raytrace/src/raytrace_bake_bent.hlsl | 4 +++- Sources/arm/node/MakeBake.hx | 6 ++++++ Sources/arm/render/RenderPathRaytrace.hx | 1 + Sources/arm/ui/UITrait.hx | 4 +--- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Shaders/raytrace/raytrace_bake_bent.cso b/Shaders/raytrace/raytrace_bake_bent.cso index ccc9882081117601052be974a201d4c08a44e4db..10928ad12128213773e5246b6ea9bd127376e1b7 100644 GIT binary patch delta 825 zcmaE0HpN`hCBn)1X7<~8v}z& zgr^TPP)YzOYXKB@az1cRk%xhSn{9I%vl~C-@5yV0j95~`8(1bk7P8=UV`y4X-+qwe zz+@HSU5w6??+X{mK45&&o3Mas0{a5zg$%Rc^Q`RQP zuVJZMAlS^t;Ap_nyqBYMy>5$xii?wqOOlBqgU*J@OGH%||7<=f8pBxsfWbk4$3`Tu zch`gdi!BNgeH>2CKXgnc{O~asX*0O1AaS^(k+DHR;tXTw3Agwj2@?j6CP#@K9Jwr8 z7m8N~N^b=s!=wTR1r9d39-xYr6B$knJnk$j1#33*91-YI6F8LNB-o=S(XiLeQNFoX z!A^|lli|V%{k-ipYc@QoPi9k*w^sN$!|=fI9!9$~o)0rs71*>Gk`FK^E?_cXGZO%D z5||T@9AE@G^wI)q5LJ;cvH~P(leZc~{mH97cErZC zcCxsHx%fsdji${O6a9a4BsV)0v-*}+BG95`lPx6Y)!$y)z{J6H^vBlzD`i>% zKRnLfZ_`}B(BxoP_f~n^N}z_I&%1bmRMP9c6T!SKhHN?w3IRR-*X^95lMjG3m%LTp zY6%xklD=_8@e;Gop^Z#4RLqzQZ|-XKl~uAmpdzE);F)ABFn#arI*<#`N-uU$e5m{_ jPdXCFTRVFRQ1IKi+lxWeyy$ucr z!qbNtC?x=tWdVviIUl&E$iu+!k9Bhzvl~C-yUA;Xj96Gb0?H;o7P8=EGH_#PT2SA9 zaI%W_xrTcjZajPpEC&xLcLq()5s4Jp(p00T zu!5;aSD{llWI-zg$%Rc^Q`R=f zuW6}UAlS^t;Ap_nyqBYMy>5$xii?wqOOlBqgU*V{OGH%|e{Vi18pBwBfWbk4=h*@K zh{t+vJW@cb6?g)Um^NKs(7m&w_c{AjNYaXz_ynm2Lv^+-yH*1e`eD=4=<{@X3&QQornknllm)l8-US8?*g5BP75q z+F-b$(I9|Pf?1k_S+pL^OM1Ydz`>R|LHSMMQnsuK#}!z%eUy{nV*!Tjav*;8mBUZj z*TMKNW2lHr%1uV*Zj)=W0Y5l;?{AYZ`0*w80b^_bg&leGnOggA)Z{(}@hbA`fTTt4 zB9NF(-ck_tC$IY05gXIk*_93tl}qxXtANyGX9;cbnOqu8n=K~#|K`YD&eZil$M4By zyCCURlUpU^ExtcZ?POx(b`9>m9sf|-G;Ve|P^W2MbOngo7rg*TZP_>b#slRo zy}Uq;^#>j(Z<~Ba!bT)|IZ*1$z1#H%9w~pl`@37gvmtP@j-)JqBbSJs)8}oq>>_qa zk9YP?j*y&JKO3aj)IWL!h^m)f38L2D1{uEXo^MeUsK?|KQe(&_#l kL!bka-fy!7Q#(C@6mQb|Jzv=sjPx# diff --git a/Shaders/raytrace/src/raytrace_bake_bent.hlsl b/Shaders/raytrace/src/raytrace_bake_bent.hlsl index 906a6b4f..7d3d4814 100644 --- a/Shaders/raytrace/src/raytrace_bake_bent.hlsl +++ b/Shaders/raytrace/src/raytrace_bake_bent.hlsl @@ -10,7 +10,7 @@ struct Vertex { struct RayGenConstantBuffer { float4 v0; // frame, strength, radius, offset - float4 v1; + float4 v1; // envstr, upaxis float4 v2; float4 v3; float4 v4; @@ -63,6 +63,8 @@ void raygeneration() { accum = normalize(accum / SAMPLES) * 0.5 + 0.5; + if (constant_buffer.v1.y > 0) accum.xyz = float3(accum.x, accum.z, 1.0 - accum.y); + float3 color = float3(render_target[DispatchRaysIndex().xy].xyz); if (constant_buffer.v0.x == 0) { color = accum.xyz; diff --git a/Sources/arm/node/MakeBake.hx b/Sources/arm/node/MakeBake.hx index a3994bef..c3cc849c 100644 --- a/Sources/arm/node/MakeBake.hx +++ b/Sources/arm/node/MakeBake.hx @@ -68,10 +68,16 @@ class MakeBake { else if (UITrait.inst.bakeType == 3) { // Normal (World) frag.n = true; frag.write('fragColor[0] = vec4(n * vec3(0.5, 0.5, 0.5) + vec3(0.5, 0.5, 0.5), 1.0);'); + if (UITrait.inst.bakeUpAxis == 1) { // Y up + frag.write('fragColor[0].rgb = vec3(fragColor[0].r, fragColor[0].b, 1.0 - fragColor[0].g);'); + } } else if (UITrait.inst.bakeType == 4) { // Position frag.wposition = true; frag.write('fragColor[0] = vec4(wposition * vec3(0.5, 0.5, 0.5) + vec3(0.5, 0.5, 0.5), 1.0);'); + if (UITrait.inst.bakeUpAxis == 1) { // Y up + frag.write('fragColor[0].rgb = vec3(fragColor[0].r, fragColor[0].b, 1.0 - fragColor[0].g);'); + } } else if (UITrait.inst.bakeType == 5) { // TexCoord frag.write('fragColor[0] = vec4(texCoord.xy, 0.0, 1.0);'); diff --git a/Sources/arm/render/RenderPathRaytrace.hx b/Sources/arm/render/RenderPathRaytrace.hx index a1ffd110..f1d2c975 100644 --- a/Sources/arm/render/RenderPathRaytrace.hx +++ b/Sources/arm/render/RenderPathRaytrace.hx @@ -191,6 +191,7 @@ class RenderPathRaytrace { f32[2] = UITrait.inst.bakeAoRadius; f32[3] = UITrait.inst.bakeAoOffset; f32[4] = Scene.active.world.probe.raw.strength; + f32[5] = UITrait.inst.bakeUpAxis; var baketex2 = path.renderTargets.get("baketex2").image; Krom.raytraceDispatchRays(baketex2.renderTarget_, f32.buffer); diff --git a/Sources/arm/ui/UITrait.hx b/Sources/arm/ui/UITrait.hx index 07ae2755..5cf1eb1e 100644 --- a/Sources/arm/ui/UITrait.hx +++ b/Sources/arm/ui/UITrait.hx @@ -992,7 +992,7 @@ class UITrait { bakes.push("BentNormal (DXR)"); #end bakeType = ui.combo(bakeHandle, bakes, "Bake"); - if (bakeType == 3 || bakeType == 4 || bakeType == 8) { + if (bakeType == 3 || bakeType == 4 || bakeType == 9) { var bakeUpAxisHandle = Id.handle({position: bakeUpAxis}); bakeUpAxis = ui.combo(bakeUpAxisHandle, ["Z", "Y"], "Up Axis"); } @@ -1031,8 +1031,6 @@ class UITrait { } if (ui.changed) { MaterialParser.parsePaintMaterial(); - // Context.pdirty = 4; - // pushUndo } } else {