From 1e1ec84fa1d38d86c7e6123c36381bf02f949b81 Mon Sep 17 00:00:00 2001 From: Patedam Date: Sun, 22 Feb 2026 15:21:35 -0500 Subject: [PATCH] Added normals to vertexdata --- AgentData/lighting_and_skybox_plan.md | 8 +-- Assets/compiled/Triangle.vert.dxil | Bin 5116 -> 5312 bytes Assets/source/Triangle.vert.hlsl | 7 ++- Juliet/include/Graphics/VertexData.h | 1 + Juliet/src/Graphics/MeshRenderer.cpp | 78 ++++++++++---------------- 5 files changed, 41 insertions(+), 53 deletions(-) diff --git a/AgentData/lighting_and_skybox_plan.md b/AgentData/lighting_and_skybox_plan.md index 653a631..1d99438 100644 --- a/AgentData/lighting_and_skybox_plan.md +++ b/AgentData/lighting_and_skybox_plan.md @@ -226,8 +226,8 @@ graph LR --- -## Open Questions +## Open Questions (Answered) -1. **Cubemap source** — procedural gradient skybox (no asset needed) vs actual HDR cubemap `.dds` file? -2. **Sampler heap** — does the engine already have a linear sampler registered, or does one need to be created? -3. **Specular** — want Blinn-Phong specular in Phase 2, or just diffuse + ambient for now? +1. **Cubemap source** — **Procedural gradient skybox** chosen because asset loading infrastructure is not yet established. +2. **Sampler heap** — Evaluate what exists. However, with a procedural skybox, we won't need a sampler for Phase 3! (The sky color can be procedurally generated from the reconstructed view direction). +3. **Specular** — **Blinn-Phong** specular, structured in an agnostic way so PBR (physically based rendering) parameters can be plugged in later. diff --git a/Assets/compiled/Triangle.vert.dxil b/Assets/compiled/Triangle.vert.dxil index 7e88767e82a37918302a435e9595820fff5e5724..49c09b17bcbc11bfdb2372a882b694ae84714907 100644 GIT binary patch delta 1893 zcmZuy4NOya5Pz>N?dvCx0_E}HXq9j3RzB7$YSu?9@>NA33W7-sg6JxsFvH@s9|%@c zvzEd{(WS^oz@QUBLbvEBm`$L#7G371VqFl~LJZqPW!bX*p9oB|OYZe@_q*TSy}P{r z6+RG|AkRsZ?d$(-13e|v=G^WoPX1G}9)=)jzz2e8;CDUHbf5;HCm=a(R6oe2#!lo@EfW03mA%vfZlgwk`u){nTLLoyi*|GwDPXLNT zQ1-?g*_JJt@?`@e5q==BMFofFf;L`}z_1J=FNO#oNlqqHAV}j$V3#E;8_$-5Mv6g} z7r@JNQqrlQ3lur<%u_~T z&0wvvk&hN##yh&$qkKk-o7O31R7bInTxR6AcU`wmOpQ;EPuv#^Goy|AsAqU2tBpTz zk5pqBI^TTN5X$%hN=I+GSz;tfsE(NAdnzB9Jpzi=Wva>w@1wdx^OSg#M1o@p+&!h0 z74cK!x31s4S>k9rcX-UDK&hHfk)8e%e)saQAE~vxy>?zH>~|p_t5o?_HD4I~ruc`c zx}_Hg6Wa%Zo}|c+clelZV1~|_3lBH`e4z4EK&={|MStH9a!$^{M&)K{`cyk zNLlTZmD|NHwuMW!i6x=sQRYWB=VN<=hs}1)RpSB_V+t>~mGi494v@ArJP0)_fWJXO ze`*C}X{Q6v<-c<$?@Zu>`}I=Zm!Puo+V?gWsIH(_!95RXOww9fv?|s{8-1A-C(he4 zbL3lM3u>@RVk=E=Z6zD{7q?Q^BVarvg`UtFG9z?e+PVmRVgxyXi2~6%x@)!bFLWdR z5JapDhtO zvW%LOW0%H4Pj)#@mZqZFf}x7;=pB}(v_ln5TvTy$Hh*UD?##$!J0)pF?D|t{dqr1b zZS9gPv3-$nW-aTxjhECs-S65Yg=e+2SJ?oUttZk-sv zKRwk>DeF1O`3Kg_f>ZaV;6mc$IY8rmwnx_Q6gZ&zHmRLcKO^1aBX@D?H{!lYc62M} zG44R1Jr&3jG-wqSf%Hmuv(DQD#}t%9e1zH*AO)t0Fl&M`ij~xd z@e6_5fjNV5XHX)C50ab?*e7JzV28DQOkI}Yk?dtbg22wyW9#FaWKbRK!jq)4an}QAzk97;RdC^W7 zb68AXJZiUzR%E4Fnz=lUKDYxH8p9|9C3@5t#u_Xk#Tc<5(1PwNvt^cg^-WS`R=~~O zHy~JwvP9)MHIZz+7x=p1qJcr3Z+koHmJpR2 z8*3ssizMSZ-uX3%&|odhSg`~-*zeJ?g!l>evnC)ytu^lTOzYjG$kri?*~^zY=VW%G zo?s|n%`eq!`Ultj?^JW1Pejb;Z%>6Sm8+{dHq1<7p%BFmMboPq`;@Q8wHS`kndwpF zc_YRrHdM>~gMS802+{ zisPRc2Kb^5_GH`w6P7+hZl&4{FbUj*GRE%d^ryV$9hQF}-Gv&l5Td-^`)?gzDjl4O)-C^_SDt2&M=diz-hkoiG6Ojs wFgO9jB7q1H#4wi$TIFet^0?)SsQ@4HM%W~eDd4@je4?Y&-lNHs#s9m10l~ms#Q*>R delta 1771 zcmZuyeM}Q)7{9w7*Ot3NDXkPixk88Sz`ME=2+Z&7CSV%>waGAebww?Oa?$L0}CrG%OHs+uR1Y&mw}QC<4KVWjnk{L@=15UB#Nb zyh1I5VV*6m@P=$=!CWw`WwB5QdJ=dH-uD&JMaiJvJ0J%KwYA0Bxfn?21B4Llt2Op1 z37|&?dB_riwxoBH7H-J8aPt%LF!q$?xEO+LmgBr_gEb*$*nqUlFKy}_vMGnJZ5iSs z1z5}(i71m6J?<8sC=@SG3)48geW5WY@^vA)x*F`=KAI{i)kxUKJ)yUgJXHC|xV5vB zBw{~R4s9K_ah;yFtRvP=YfAgEKSnb%%N29}s?VzHs1LP1_x$(XDW@xq>L>9*75)u5 z>8!yG-Xu~@9=)1dt(Y4>l%rBgMvnC3<%3C6 z$LVsniQA2e@TN*B(&0!hhvfE2v(bW5x$lI5@IZ`rDzD z;d6-GxA6E;bl3+ajN;2+1Q-VlFE}s*_MbU$3^=WXR!( z21Y~EI1ndCcNf_5g<69rBw4CHN=Pd26p$4_&>8o`so9wy+(6B|bxiWLf$P!%`7kv+ zAg7Cf2^Yp%_bS3?H;%Ugh5IlFNc=Z!C?z529vIF@lul*_IShnS`1<5&wPXwu`c-d) zp7N^>2(=Sor*{1!%#7d{g#Aj7ai9Z7IOWr0lC!ktL9F&Cr3j=!2^a^e(@meNjWoe2 zWi=4V!QNV{1xqut+!dQ&k&peX3>;WuN}QWJ_|lamj|&z`Z#Fq#BPrHb>q4?bW|LS3 zaq3_#yWP?r5ocI%e1(?gH#;iTkSUSlsC1I1ME*#`kL%y_KfMKVi>)5ayVjJ5+AHh$ zrbNP7iKLjsv4E(yG4!x!^o8`5q$@S-GGnNf3sW5=YUS2b9V#LLV}oXNH<7q5ILVY~ zSk34aVvEr!Du|D={A)5xL+f=nAXvpGs1mYKP9S)q?`%;Jp^w^2zZ^vDSA|>z2&u35 zR1o2hdQFlOMAYaSWjq9r_lfTY5&Bree)wPza@ZKs3m~L#rM07B{dV>=)xn3XTs74} zaje`MR6yr7+q`O7_sH|At+c(+hxbhXf7_F+S1zl!t +#include #include #include #include -#include #include #include #include @@ -148,21 +148,6 @@ namespace Juliet MemCopy(ptrOneByte + indexOfByteOffset, g_MeshRenderer.Indices.Data, totalIndexBytes); - // index_t index = 0; - // for (Mesh& mesh : g_MeshRenderer.Meshes) - // { - // // Vertices first - // Vertex* mapVertices = static_cast(map); - // MemCopy(mapVertices + index, vertices + mesh.VertexOffset, mesh.VertexCount * sizeOfVertex); - // - // // Indices next - // uint8* ptrOneByte = static_cast(map); - // uint16* dst = reinterpret_cast(ptrOneByte + indexOfByteOffset); - // MemCopy(dst, indices, mesh.IndexCount * sizeOfIndex); - // - // ++index; - // } - CopyBuffer(cmdList, g_MeshRenderer.VertexBuffer, g_MeshRenderer.LoadCopyBuffer, totalVertexBytes, 0, 0); CopyBuffer(cmdList, g_MeshRenderer.IndexBuffer, g_MeshRenderer.LoadCopyBuffer, totalIndexBytes, 0, indexOfByteOffset); @@ -203,42 +188,41 @@ namespace Juliet { Mesh result = {}; - constexpr Vertex vertexData[] = { - // Front Face (Z = -0.5f) — Red - { { -0.5f, 0.5f, -0.5f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, - { { 0.5f, 0.5f, -0.5f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, - { { 0.5f, -0.5f, -0.5f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, - { { -0.5f, -0.5f, -0.5f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, + constexpr Vertex vertexData[] = { // Front Face (Z = -0.5f) — Red + { { -0.5f, 0.5f, -0.5f }, { 0.0f, 0.0f, -1.0f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, + { { 0.5f, 0.5f, -0.5f }, { 0.0f, 0.0f, -1.0f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, + { { 0.5f, -0.5f, -0.5f }, { 0.0f, 0.0f, -1.0f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, + { { -0.5f, -0.5f, -0.5f }, { 0.0f, 0.0f, -1.0f }, { 0.8f, 0.2f, 0.2f, 1.0f } }, - // Back Face (Z = 0.5f) — Green - { { 0.5f, 0.5f, 0.5f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, - { { -0.5f, 0.5f, 0.5f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, - { { -0.5f, -0.5f, 0.5f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, - { { 0.5f, -0.5f, 0.5f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, + // Back Face (Z = 0.5f) — Green + { { 0.5f, 0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, + { { -0.5f, 0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, + { { -0.5f, -0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, + { { 0.5f, -0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.2f, 0.8f, 0.2f, 1.0f } }, - // Top Face (Y = 0.5f) — Blue - { { -0.5f, 0.5f, 0.5f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, - { { 0.5f, 0.5f, 0.5f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, - { { 0.5f, 0.5f, -0.5f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, - { { -0.5f, 0.5f, -0.5f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, + // Top Face (Y = 0.5f) — Blue + { { -0.5f, 0.5f, 0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, + { { 0.5f, 0.5f, 0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, + { { 0.5f, 0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, + { { -0.5f, 0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.2f, 0.2f, 0.8f, 1.0f } }, - // Bottom Face (Y = -0.5f) — Yellow - { { -0.5f, -0.5f, -0.5f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, - { { 0.5f, -0.5f, -0.5f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, - { { 0.5f, -0.5f, 0.5f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, - { { -0.5f, -0.5f, 0.5f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, + // Bottom Face (Y = -0.5f) — Yellow + { { -0.5f, -0.5f, -0.5f }, { 0.0f, -1.0f, 0.0f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, + { { 0.5f, -0.5f, -0.5f }, { 0.0f, -1.0f, 0.0f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, + { { 0.5f, -0.5f, 0.5f }, { 0.0f, -1.0f, 0.0f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, + { { -0.5f, -0.5f, 0.5f }, { 0.0f, -1.0f, 0.0f }, { 0.8f, 0.8f, 0.2f, 1.0f } }, - // Right Face (X = 0.5f) — Cyan - { { 0.5f, 0.5f, -0.5f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, - { { 0.5f, 0.5f, 0.5f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, - { { 0.5f, -0.5f, 0.5f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, - { { 0.5f, -0.5f, -0.5f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, + // Right Face (X = 0.5f) — Cyan + { { 0.5f, 0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, + { { 0.5f, 0.5f, 0.5f }, { 1.0f, 0.0f, 0.0f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, + { { 0.5f, -0.5f, 0.5f }, { 1.0f, 0.0f, 0.0f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, + { { 0.5f, -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f }, { 0.2f, 0.8f, 0.8f, 1.0f } }, - // Left Face (X = -0.5f) — Magenta - { { -0.5f, 0.5f, 0.5f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, - { { -0.5f, 0.5f, -0.5f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, - { { -0.5f, -0.5f, -0.5f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, - { { -0.5f, -0.5f, 0.5f }, { 0.8f, 0.2f, 0.8f, 1.0f } } + // Left Face (X = -0.5f) — Magenta + { { -0.5f, 0.5f, 0.5f }, { -1.0f, 0.0f, 0.0f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, + { { -0.5f, 0.5f, -0.5f }, { -1.0f, 0.0f, 0.0f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, + { { -0.5f, -0.5f, -0.5f }, { -1.0f, 0.0f, 0.0f }, { 0.8f, 0.2f, 0.8f, 1.0f } }, + { { -0.5f, -0.5f, 0.5f }, { -1.0f, 0.0f, 0.0f }, { 0.8f, 0.2f, 0.8f, 1.0f } } }; constexpr size_t cubeVertexCount = ArraySize(vertexData); result.VertexCount = cubeVertexCount;