From 526ed2da0e5ff1c8441ee2b22d64bbc2b22ee0d3 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Sun, 27 Oct 2019 17:53:31 +0100 Subject: [PATCH] Simplified offscreen sample --- data/shaders/offscreen/mirror.frag | 6 ++--- data/shaders/offscreen/mirror.frag.spv | Bin 2660 -> 2376 bytes examples/offscreen/offscreen.cpp | 29 ------------------------- 3 files changed, 2 insertions(+), 33 deletions(-) diff --git a/data/shaders/offscreen/mirror.frag b/data/shaders/offscreen/mirror.frag index 396f43db..9c784dc2 100644 --- a/data/shaders/offscreen/mirror.frag +++ b/data/shaders/offscreen/mirror.frag @@ -1,7 +1,6 @@ #version 450 layout (binding = 1) uniform sampler2D samplerColor; -layout (binding = 2) uniform sampler2D samplerColorMap; layout (location = 0) in vec2 inUV; layout (location = 1) in vec4 inPos; @@ -21,8 +20,7 @@ void main() // For demonstration purposes only const float blurSize = 1.0 / 512.0; - vec4 color = texture(samplerColorMap, inUV); - outFragColor = color * 0.25; + outFragColor = vec4(vec3(0.0), 1.); if (gl_FrontFacing) { @@ -35,6 +33,6 @@ void main() reflection += texture(samplerColor, vec2(projCoord.s + x * blurSize, projCoord.t + y * blurSize)) / 49.0; } } - outFragColor += reflection * 1.5 * (color.r); + outFragColor += reflection; }; } \ No newline at end of file diff --git a/data/shaders/offscreen/mirror.frag.spv b/data/shaders/offscreen/mirror.frag.spv index abfc8dd81598959534d8e5b694d150a3cedaab8d..dfe1a34bf31a8e121d247844b7b93b260a737bd8 100644 GIT binary patch literal 2376 zcmZ9NX-`#G6oxm`#i14Fp|*N(9)>`kH_OLeebnop?sVnuTRq1u=d>c|XOiF80t&kIw_a}#z+p|Nb z&-`e_y3|ty8Z(eqr(UF3tT&oEz5yB759Yvn;`P%At%vF<{YP>iY&EYB-)emA#ihb$ zoknviUq<%vvl+S6%HNFTd26=dYDJ&?kM?-0K0lT(+S)5#%m9P$oI^w=eLQ|>P8M0CzlF+D|!ts1KY^=T(v#R zjNhw}a^fhqzBM4Fwc0W379PD%RN!>`_JZ z-U-h)60zT7$W>w8-Ej7Zb!lfM7qtel{i2rVC>OB*W=?4@(wh5_T|nEtYI`4YQR4`D z2caSZf_acFweOF8YVS=arQe*Qb33xQ87~@(9v1GQawTy_3jGIE=IYQ)lr4 zJ=}|LO8y^Wv^N50Kz@pB^EUzcDlW2O*Qd`~#%%%C4|^-RF@IBA|2ANZy!q}&F5-8f z%e^b(zeAVvZA83W#Q%V9eAM^N%lSScUQRtj?g8dH%LjmS{2t#Sq~9le@&|#O_n~gS zXYHJ;d(O`7NBk#{#wq_N|0m>0;HUo-QoqvP&d6zCjepsvYdKqT&c18V_8*0{%vHCq z_ZfZ9l|H3?e?bldKl}cQG*=mYFQ8i^`d%!2oi}G+?eoA|=Bk@}2{{HvfwSbh83&%d z@5vZvX9CDazia63GcWzu(dE1^<8J~v-<)?YHwmnxFM8cZx7RHYz3!mPN3SV#_ZGeG zqRU0Ed+2i2UiY!Bqi>4-50DRmYtT0h*N=Pz+`qnf6ThKPe+A!=@xKFejB$N(kAX83 zv;CyxjE(t{^X|My&tDn)dy4M<-qOPvdJg3LdlR!EXMW6v_o(eWT2C4EUZ8t7QST+X sT-4JiXMW7M^BDW7qr0E5U!i9p_BVqrXPoQHkaE_Gx262dU&C|Y3wFJpPXGV_ literal 2660 zcmZ9MX;V~J5QdM!pvJgwF>ZsXB+(F)pixnXqTqsxam%hFTgD7?$uL&wH~e6gpZqia z0V_Ys7^^INo;$a#TVCp=yWj59-RGP>)3vg1RZ1(;s*0R>GvTHudCkeB$QB zz+!uPVDQ*cBi5&`JkXd8X-(=ziuqc-spC`74-SKG!A9csQwXh#>?!@r;tFheT?OA7 zeC_##+-IJ8b23{*R`}bBTxewvN3*Ooopar3A95;dWcFU6-#+AGZGNFK(;Ah&TI=Mp zpL+B59Yh{yZ`q^vSgSUd#|3Y{bB%jrt*qG|t4-CLbDi49;9E1ZjhU%-J!6;ldJ66_ zP(P1+lIuNb0$J_>GmW!T_p=vxZrb*`ANYmci|+Yo+q3b0+V)(w?R72KRQRo1&ZliY z>un*cd3)*A+f(0;)`P5q9pv|Zw7rum|5qdB#9?fGpMaE>M)X_T-1>(K+dax{!(NB1 z0zcPluLst5{RX75<~>3d^Lz%ZQAX6>1>Nv?E4UM1&}vhyT9P{e}(QI<6N}8JGt1)*XSuN4R0muH)yW& zahX@!yxQKeT&z2e?iXk91G-!pp8W~9DsZj2Pa^F{-dxHd@NRi|IqY-T_84d2{P^kj z?ylulC*O5+^LZ}O+pUg&DB|y8mwUgT`_G??db1z-|IYodMvn8MJZtCB&z|1ERFL-O zT>3i^=d0~+L)rFsp=|qp!}ctEyJg$=t9_O#&gDknEIY4fsOdg^XY$X9(cTQ4Q~60& zyM7ChFJqV;*snfw8Mh6XKkV)3#ylgp{vE&=dDpu?xrpD1F88#E{~TS;_Y?7Q5x)oB z_{i_?h@5XI;^mC*MIHcsh3%Yw0s6t+qTZM2#>l(g^OlQxN6_V76!8P-a?ZW+z6Uwu zo%ip6v;H5xL8RYXeDdD|IcGrK_1>qmukKws%m3p)jWkaAn)SoT5#Xo)N2GqGwS5O? zfjM5%tG$dCobSONw9f!@xwfNse)FU5g~F$_?l|%y@U!kEq-&K?_cFS37j>_o%SB!7 zF<>s&s=LKcTzNtnlANmvbhJzYXMW0q08Y4ls|t zsP!|twS3=E>lbwSsP!wldy87Xq02?B-_hmDwf?|1kG@IjJ9mEqd(aoNcMskD>x*|+ zL%;tKe5byp2f#JP*q_`KaE9XjOc$K7F<)}to%iVZD`S5%= #include "vulkanexamplebase.h" -#include "VulkanTexture.hpp" #include "VulkanModel.hpp" #include "VulkanBuffer.hpp" @@ -34,10 +33,6 @@ class VulkanExample : public VulkanExampleBase public: bool debugDisplay = false; - struct { - vks::Texture2D colorMap; - } textures; - // Vertex layout for the models vks::VertexLayout vertexLayout = vks::VertexLayout({ vks::VERTEX_COMPONENT_POSITION, @@ -124,9 +119,6 @@ public: // Clean up used Vulkan resources // Note : Inherited destructor cleans up resources stored in base class - // Textures - textures.colorMap.destroy(); - // Frame buffer // Color attachment @@ -453,20 +445,6 @@ public: { models.plane.loadFromFile(getAssetPath() + "models/plane.obj", vertexLayout, 0.5f, vulkanDevice, queue); models.example.loadFromFile(getAssetPath() + "models/chinesedragon.dae", vertexLayout, 0.3f, vulkanDevice, queue); - - // Textures - if (vulkanDevice->features.textureCompressionBC) { - textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_bc3_unorm.ktx", VK_FORMAT_BC3_UNORM_BLOCK, vulkanDevice, queue); - } - else if (vulkanDevice->features.textureCompressionASTC_LDR) { - textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_astc_8x8_unorm.ktx", VK_FORMAT_ASTC_8x8_UNORM_BLOCK, vulkanDevice, queue); - } - else if (vulkanDevice->features.textureCompressionETC2) { - textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_etc2_unorm.ktx", VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, vulkanDevice, queue); - } - else { - vks::tools::exitFatal("Device does not support any compressed texture format!", VK_ERROR_FEATURE_NOT_PRESENT); - } } void generateQuad() @@ -591,12 +569,6 @@ public: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, &offscreenPass.descriptor), - // Binding 2 : Fragment shader texture sampler - vks::initializers::writeDescriptorSet( - descriptorSets.mirror, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, - 2, - &textures.colorMap.descriptor) }; vkUpdateDescriptorSets(device, writeDescriptorSets.size(), writeDescriptorSets.data(), 0, NULL); @@ -625,7 +597,6 @@ public: allocInfo.pSetLayouts = &descriptorSetLayouts.shaded; // Model - // No texture VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSets.model)); std::vector modelWriteDescriptorSets =