From ea73f83f2f3fa58af0454bc259b8b15ab8c4bb77 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Fri, 15 Nov 2019 17:44:04 +0100 Subject: [PATCH] Handle normal map in raytracer --- Shaders/painter/hlsl/cursor.vert.glsl | Bin 4923 -> 5144 bytes Shaders/raytrace/raytrace_brute.cso | Bin 14292 -> 15352 bytes Shaders/raytrace/src/raytrace_brute.hlsl | 25 +++++++++++++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Shaders/painter/hlsl/cursor.vert.glsl b/Shaders/painter/hlsl/cursor.vert.glsl index e0cbdca99984d9d97773522bd35d182c7fcc1199..48f957d9695280dcecc094387f2faf19aab73aaa 100644 GIT binary patch literal 5144 zcmd^DO=w(29G~}+>~0dGic;lLRe80-W#uOqG36Jl`L*(D0hGl{7dDoc3zboa@&wiAP(Edp5?1BeRiE;Y zjIWk1cMr@x=LUW^RJQH&!Pk6{p=1|L*B06=Rv7DFdZ=qF?7Fze{&K)1=B3PuDvV0tGp|Gqd}XD=PKqe zLbj*q7$Csla>4E;W|`~2lZS&Wt@y5hSO;Bq5aw%S28bS+ZvgLF3-nfe-+@m$j;elX zp%0C`yjsfF1}_hyH`-7)RxTcL&|!Mtbi5WEPz?`qo{lbF?nB7wGht7HmQ#%eyV29t zkC(d*xwFN$Dy3>^xt2LP{d{KPOzuo3x01hDsANV;Yvm%&d8WVb#eQ`=eh@niFlhLt%K_}FwBh2k4#QZkHX!?By0#DZM=#h;B25#hb)r1 zoeiv=uH4+>RH<656-(>Xo0}M$|7t&d@Kgf=Z>N-Z9!DtqaYk$E!t+h4T1xA^tf^nt z^mo1&#VZ@0+1civeBnKLxnG3NN;<7`!1Vyuq!qZ%7(JKZ$6c(cgJT70N??8&$3l3r zR&D^-)qpZ`*?IZdTaxgz)h9vX;ukh*2%6YWONmdye4J)zV`x1eNX_Mj5J zoi4+-Q!~CZM~uM>jLv72>Y`8dU3h&Ru|Pw21v0b? z8}%PB6Z`-V6F1~doamWk)Xwz|>pRjlZ1tQ_O+8%}hgg!NGnQi(Cvn36PU@u(TgXW` zUWo_w*>~5UXPsD6@@(xl zHT45*BEUL@`N;1FcsMXI_<=)U!CL8h={n(v?Ws;tJ9C|BeV!q%>qI@#IuXY@ZQ5F} zPQ-Zu9ssEmaew!i97tbEjzCIQtbEotJe(;5=%inS&>5)@X^c5<;rt7)v+HDN<$DL7qC-FX!8jGE{K7A^rhxZA4 zDSDp}=LL8G!hO0WXBTqxLwX5I-KWGw`!ucxd2bL}-5boU++kwF4=Ax4m|NkaPTqNb zfQP$lxpp`?`vz(6YQ_p1d%CNsU+nO%rYvAjcK~zqZ+AdAr(y?UyK*Zzrfp-QdhW^3 zUgO|9MdYRbTIu;<@cj22k0SHszB{KlV7XgrekIh)#wR%w#=kfCZGw2ib(3?V-;ehF z!t={L{L$|ep>g&DJeqJ5%bR|Hr-k2pP6r(Q=!0pS+l0+2W_=$sj~K})eXHBqb$7YT zo%IPh)OCRVQ+&L+;XqaC(u!3oc^@Jr-)-subPfFa|PI*uGg>BvLZCU^-aEHBq0 zPu)NM^)qYX`cHaHXlFzIQa^JkJVI*&jx_$#fE_%|_vA3v{H;ZMd-XRyNy7o#T>7w-V_@vKsZ&={-G z(UP|Aa=J5b3_mses^hr3_)a2 z^G@Mq-i7w*_HQpq-N++8gn7Ul7(MlE@I2((Uj^jF(BKE0+&39Fy4IT^`@G8^5A|@? zo>}=##9ko%Fl2NsB6Q}Ebow1f=WiI%kEM$0=l?7CNv7{jO_#H6eFSb7jWy(*N??CI zN-UIpSS;)@fV&6etg{x3P20*_xZYT3R%28q&VBpwr&#XrJ87(9AWg emob=20&6mkK^_@cwgl!l3@L2*TbHu`1^xk8&Gmo) delta 1624 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 lIT;A&-#fA1bY+TN diff --git a/Shaders/raytrace/src/raytrace_brute.hlsl b/Shaders/raytrace/src/raytrace_brute.hlsl index 42b45a6e..4f3f3d76 100644 --- a/Shaders/raytrace/src/raytrace_brute.hlsl +++ b/Shaders/raytrace/src/raytrace_brute.hlsl @@ -94,17 +94,18 @@ void raygeneration() { } float3 color = float3(render_target[DispatchRaysIndex().xy].xyz); - // float a = 1.0 / constant_buffer.eye.w; + + // #ifdef _RENDER + // float a = 1.0 / (constant_buffer.eye.w + 1); // float b = 1.0 - a; // color = color * b + (accum.xyz / SAMPLES) * a; // render_target[DispatchRaysIndex().xy] = float4(color.xyz, 0.0f); - + // #else // _PAINT if (constant_buffer.eye.w == 0) { color = accum.xyz / SAMPLES; } - render_target[DispatchRaysIndex().xy] = float4(lerp(color.xyz, accum.xyz / SAMPLES, 1.0 / 4.0), 0.0f); - // render_target[DispatchRaysIndex().xy] = float4(accum.xyz / SAMPLES, 0.0f); + // #endif } [shader("closesthit")] @@ -129,15 +130,23 @@ void closesthit(inout RayPayload payload, in BuiltInTriangleIntersectionAttribut uint2 size; mytexture0.GetDimensions(size.x, size.y); - float3 texpaint0 = mytexture0.Load(uint3(tex_coord * size, 0)).rgb; + float3 texpaint0 = pow(mytexture0.Load(uint3(tex_coord * size, 0)).rgb, 2.2); float3 texpaint1 = mytexture1.Load(uint3(tex_coord * size, 0)).rgb; float3 texpaint2 = mytexture2.Load(uint3(tex_coord * size, 0)).rgb; float3 color = payload.color.rgb * texpaint0.rgb; + float3 tangent = float3(0, 0, 0); + float3 binormal = float3(0, 0, 0); + create_basis(n, tangent, binormal); + + texpaint1 = normalize(texpaint1 * 2.0 - 1.0); + texpaint1.g = -texpaint1.g; + n = mul(texpaint1, float3x3(tangent, binormal, n)); + float f = rand(DispatchRaysIndex().x, DispatchRaysIndex().y, payload.color.a, seed, constant_buffer.eye.w, mytexture_sobol, mytexture_scramble, mytexture_rank); float3 wo = -WorldRayDirection(); if (f > 0.5) { - payload.ray_dir = lerp(reflect(WorldRayDirection(), n), cos_weighted_hemisphere_direction(n, payload.color.a, seed, constant_buffer.eye.w, mytexture_sobol, mytexture_scramble, mytexture_rank), pow(texpaint2.g, 1.5)); + payload.ray_dir = lerp(reflect(WorldRayDirection(), n), cos_weighted_hemisphere_direction(n, payload.color.a, seed, constant_buffer.eye.w, mytexture_sobol, mytexture_scramble, mytexture_rank), pow(texpaint2.g, 1.2)); } else { payload.ray_dir = cos_weighted_hemisphere_direction(n, payload.color.a, seed, constant_buffer.eye.w, mytexture_sobol, mytexture_scramble, mytexture_rank); @@ -146,6 +155,10 @@ void closesthit(inout RayPayload payload, in BuiltInTriangleIntersectionAttribut float dotNL = dot(n, wo); if (dotNL < 0.0) color = float3(0, 0, 0); + float3 wi = payload.ray_dir.x * tangent + payload.ray_dir.y * binormal + payload.ray_dir.z * n; + float dotNV = dot(n, wi); + if (dotNV < 0.0) color = float3(0, 0, 0); + payload.ray_origin = hit_world_position() + payload.ray_dir * 0.0001f; payload.color.xyz = color.xyz; }