From 18012268ed6a315f2cae85c35030d5b1088c8ce9 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Thu, 8 Jun 2023 16:50:12 +0200 Subject: [PATCH] Added HLSL shaders for mesh shading sample --- shaders/hlsl/meshshader/meshshader.frag | 15 ++++++ shaders/hlsl/meshshader/meshshader.frag.spv | Bin 0 -> 368 bytes shaders/hlsl/meshshader/meshshader.mesh | 50 ++++++++++++++++++++ shaders/hlsl/meshshader/meshshader.mesh.spv | Bin 0 -> 2264 bytes shaders/hlsl/meshshader/meshshader.task | 19 ++++++++ shaders/hlsl/meshshader/meshshader.task.spv | Bin 0 -> 576 bytes 6 files changed, 84 insertions(+) create mode 100644 shaders/hlsl/meshshader/meshshader.frag create mode 100644 shaders/hlsl/meshshader/meshshader.frag.spv create mode 100644 shaders/hlsl/meshshader/meshshader.mesh create mode 100644 shaders/hlsl/meshshader/meshshader.mesh.spv create mode 100644 shaders/hlsl/meshshader/meshshader.task create mode 100644 shaders/hlsl/meshshader/meshshader.task.spv diff --git a/shaders/hlsl/meshshader/meshshader.frag b/shaders/hlsl/meshshader/meshshader.frag new file mode 100644 index 00000000..d4e1e8de --- /dev/null +++ b/shaders/hlsl/meshshader/meshshader.frag @@ -0,0 +1,15 @@ +/* Copyright (c) 2023, Sascha Willems + * + * SPDX-License-Identifier: MIT + * + */ + +struct VSOutput +{ +[[vk::location(0)]] float4 color : COLOR0; +}; + +float4 main(VSOutput input) : SV_TARGET +{ + return float4(input.color); +} \ No newline at end of file diff --git a/shaders/hlsl/meshshader/meshshader.frag.spv b/shaders/hlsl/meshshader/meshshader.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..93ce5e695fd5d9a5f11517d4cffdfc5c8129af99 GIT binary patch literal 368 zcmY+9I}5^4425GK))zhybd!p^IEf$%BGN@DRB;vEI;bG(Z+8(q-z^RXa+8ysljQo| zC^ElfW=(78#X9C$QSlunZ&_r4BKhT%Uuk%97;U}OBZqwp70+shR(72HI)0t*<8``C zvx$14nCNcLhimK($NefxHhb3#{&pnV%ASE71Ec-no)CA%^1d>5gNs_A3yPbm$Ep@L za)Vh{lPiit&8RAp&&5H*PW}Y`Y1liJ5*|Ga-COLM;zC^J*5&Aznu`YfkzywQ0$bb^ AGynhq literal 0 HcmV?d00001 diff --git a/shaders/hlsl/meshshader/meshshader.mesh b/shaders/hlsl/meshshader/meshshader.mesh new file mode 100644 index 00000000..840e009b --- /dev/null +++ b/shaders/hlsl/meshshader/meshshader.mesh @@ -0,0 +1,50 @@ +/* Copyright (c) 2023, Sascha Willems + * + * SPDX-License-Identifier: MIT + * + */ + +struct UBO +{ + float4x4 projection; + float4x4 model; + float4x4 view; +}; + +cbuffer ubo : register(b0) { UBO ubo; } + +struct VertexOutput +{ + float4 position: SV_Position; + float4 color: COLOR0; +}; + +static const float4 positions[3] = { + float4( 0.0, -1.0, 0.0, 1.0), + float4(-1.0, 1.0, 0.0, 1.0), + float4( 1.0, 1.0, 0.0, 1.0) +}; + +static const float4 colors[3] = { + float4(0.0, 1.0, 0.0, 1.0), + float4(0.0, 0.0, 1.0, 1.0), + float4(1.0, 0.0, 0.0, 1.0) +}; + +[outputtopology("triangle")] +[numthreads(1, 1, 1)] +void main(out indices uint3 triangles[1], out vertices VertexOutput vertices[3], uint3 DispatchThreadID : SV_DispatchThreadID) +{ + float4x4 mvp = mul(ubo.projection, mul(ubo.view, ubo.model)); + + float4 offset = float4(0.0, 0.0, (float)DispatchThreadID, 0.0); + + SetMeshOutputCounts(3, 1); + for (uint i = 0; i < 3; i++) { + vertices[i].position = mul(mvp, positions[i] + offset); + vertices[i].color = colors[i]; + } + + SetMeshOutputCounts(3, 1); + triangles[0] = uint3(0, 1, 2); +} diff --git a/shaders/hlsl/meshshader/meshshader.mesh.spv b/shaders/hlsl/meshshader/meshshader.mesh.spv new file mode 100644 index 0000000000000000000000000000000000000000..7e7eb60d8a30989e96f5a3252ca1b6a76556d9ce GIT binary patch literal 2264 zcmZvc*-lhJ5QdKoGq?-x3*rFo0`4m+gBz#_sL@-3ItdtY2%GT^-@q8-jXs3&1$-)v znwa=~hpsqIJmjb9udS=AyQk39-I5hnWm&c{8|S}YTh^4l+nQx-vr_hO{PD!-qnk*GOyBLYs@pQKF>Xxw+y0|w#Gbdk*Ciu`W#|1+Kkzb zz8+Zy$H-9M0Q`b)%-QnS;G0(Xz&7IDV;R_|ez|wkFZgD3*9yJ`-FWjEeV&iV{qk)f z>dChQKl9}~K%tKBM7RD9{JW6G=$HEj+>^7|$^Sh_ZSszEhS~xhX*Ql&nJDj)wVhWx zd@s^`d(iKFu~*mCzYiHb>Mz6XMZ3H+aqGyt5;tcHD|tqpWb8+(8*>2Z`mQTKh_okr z-imf8*$*RK%ea2x?A<$TtlVDJS0!FX8ZY#BBArV;_e})1SKo}>K8_&m%f0lVx$aTm z{qfEyy({56mh9RZeLX4mUtcM&-HXq<<{KCF`p~0J$nYIczOdK#!OutDm%i}#urv2@ z5?I%KI%?4p3eU&ddyXyx^wW}_^yAl;{l{IRDL7R+7;kCcdmor8u-k*-tFt4 z0(^7dS@#A~zuzyoez|t*st=OuySWKGg9>o}-qBk?`x|29L&;|EZkhhSTmiAxU3BeHV+7qdRRPwJ8?%hnIk@)9O~@q99zPtwtNrZQRU?5am4 z-qFgl^!dd?0jOxuZ(d*D90}DD@dv^Znj*Zr%(7KKUENR95h2-4UOuwcO&2L#y}j$) zKYfWkoI71EI