// TODO: // THIS WEEK: // - add lights to swirling trash // - finish blog // - update docs with examples // - publish // Shaders // - minimise shader duplication caused via pmfx includes, organise shaders better // - resource names with name: (without space) cause probs // material system // - area light // - disney brdf // - shadow map // - omni shadow map // - cascaded shadow map // engine // - reverse depth // - HDR pipeline // - buffers in pmfx // - glft // - set name on resources // - lazy init print function // - texture load image from file into pmfx // - barriers for compute // - resolves fully data driven // - clear buffer (uav) // - clear buffers for compute // - example triangle culling via execute indirect // gfx // - Alpha to coverage // - Stencil Ref / Buffer // - Texture Formats (BC etc) // - API for copies and clears? // copy texture region // - API for fence? // ui / debug // - per demo settings // - thread stats // - view menu + saving state // - imgui not tracked within draw call stats // DONE: // x fix light buffer 0 issue? // x update default configs for users // x allow pipelines to drive the num thread in compute shaders and vice/versa // x pass output dimensions to compute (fix mrt) // x rename descriptor layout // x pmfx // x fix tests // x apply maps / material properties + lights // x serialise plugin data is badly formatted (needs expanding per plugin / demo) // x render grid not tracked // o store hotline-data commit hash for crates.io // x ability to view images in imgui from different heaps // x cleaup heaps // x post process / 2d passes (compute based) // x mip map generation // x MRT // x MSAA sample reads // x aabb culling with extent / pos // o print validation messages on panic / stack unwind? (didnt work) // x Execute Indirect // x gpu culling // x pmfx-shader // x nested structure usages are not detected correctly // x cbuffers containing arrays not being correctly compiled in // x structures being brought in when not used // x cbuffer members incorrectly being brought in when referenced by scope (world_matrix, entity_world_matrix) // x copy buffer region // x imgui colours are not complete // x improve ecs examples structure // x transform normals with world matrix // x construct tangent space // x resource sizes passed to compute // x render target fixed size // x directional light // x spot light // x update: maths-rs // x fix get_num_32bit_constants function // x need to supply number of lights // x add vec rotate 2d function // x add cubic interpolate function // x add cubic tangents function // x fix rbga8/vec functions // x cook torrence // x oren nayar // x different camera support // x persistent mapped buffers // x point light // x create texture with heap // x pmfx shader heap // x compute passes // x ecs texture // x stats read out // x cleaning up srvs in ecs worlds // x uv's need flipping on geom // x timer stats // x structured buffer instances // x validate states exist in pmfx // x crash on reload // x corretly obtain cbuffer alignment? // x fix gpu time inconsistency // x in client terminal / log (validation layer) / info queue // x find offsets to bind heaps to from register bindings in shader // x unify shader code and pmfx code // x cubemaps do not create descriptor layout binding // x texture3d do not create descriptor layout binding // x 3d texture // x pmfx static samplers should be an array - actually no! // x texture array // x cubemap // x tidy push constants material // x maths_rs 3x4 transpose doesnt work, it should return 4x3 // x sumbit one commandlist for each texture not mip // x ddsfile // x textures with mip_levels // x pmfx scissor not hot-reloading // x pmfx viewport not hot-reloading // x pmfx blend state not hot-reloading (hashing blend state) // x maths_rs hsv to rrgb doesnt work (generics) & has no test // x blend examples (push constants?) // x 3x4 world matrix // x pmfx should allow pragmas / copy them into source // x pmfx should be able to foward -args to the toolchain // x billboard? // x ecs leaks // x batch dep marker // x update pmbuild and pmfx (again) // x move primitives from ecs to hotline (fix helix uvs and capsule gaps) // x batch cbuffer instances // x pmfx v2 docs (texture and render graph) // x bug with pmfx inherit (test.pmfx cannot inherit and extend pipelines) // x bug with merging pmfx, with shared keys. the old ones are not recirsively merged / overwritten // x fix issues with crash when a return happens between begin/end render pass // x gfx::buffer should need to be mut for update // x propagate sample mask?? // x Draw Instanced // x draw instanced // x pmfx v2 docs (view) // x batch vertex instance buffer // x GPU Query // x hot reload progress / indicator in status bar // x markers on ecs render passes // x add gif to the github page, + link to video // x handle serde errors when building pipeline // x RGBA write issue // x pmfx docs for v1 and v2 // x Blend // x status bar // x time resource for systems // x spring // x move rotate system out of ecs into ecs_examples // x core update (cams, configs) // x raster examples // x update maths 0.1.9 // x update matrices ecs // x trapezoid // x chamfer cube // x quick video // x update hotline-data // x update pmfx shader // x add textures to dock // x option to save config and ini to disk location // x remove relative path for the repo's plugins // x recursive includes? // x rename basic > debug // x tourus (uv) // x single pipeline render function // x update cameras from scene // x handle missing pipeline // x handle missing view // x handle missing camera // x billboard // x shift sphere seam // x quick tidy on pmfx files and layout // x msaa + texture format reloads // x reply to pmtech user // x fix shader test failures // x capsule // x textures // x improve render function / naming and passing of view // x docked defaults // x imgui push / pop colour // x show schedule and errors // x error handling !!!! -> // x - missing plugin // x - missing system func // x - missing view // x fix tests and samples // x fix warnings // x pmbuild running on close? // x cone // x prsims // x hemi-sphere // x vs code build and run (debug and release) // x phi, inv phi to maths. generic sin cos? // x raster // x pmfx not reloading // x wireframe // x MSAA // x icosasphere // x watch files in folders // x save imgui locations more reliably // x plane - heightmap // x download data // x github ref to build tools? // x readme / docs // x combo size // x hash map utils (add if new) // x name threads // x pmfx mltiple files // x preent redundant pmfx pipeline compilation // x plugin specific serialisation structs into user-config // x update systems, setup systems // x specify pmfx // x file wataches from pmfx -w // x input system // x selectable demo // x enumerate plugins // x delete plugin mem on shutdown // x respect imgui flags (hovered / accept input) in camera controller // x improve reloader / responder create / grouping // x ui call hooks into plugin // x hotline dynamic lib (build times) // x consolidate sync code (responder ref)... downcast helper? // x - add files // x persistent plugins // x different lib build commands // x build lib on load // x handle compile failures // x plugin collecion into plugin module // x persistent console window position // x select / add plugin lib from file // x quick dev ui tidy up // x hot-reload shaders, pipelines, views // x watching rebuilding // x -- pmfx // x plugin and reloader modules // x reload new plugins // x client - rename from host // x plugin libs release vs debug // x pipeline permutations // x reload sync // x build schedule // x resources > world // x core pmfx shaders etc // x streamline install / deployment (pmbuild, pmfx etc) // x build schedule from file // x core functions // x pipeline for pass format // x host app // - window utility remember maximised flags // x window utilities remember position // x hot-reload lib // x fix validation warning on resize // x handle dropped resources on rebuild // x pass view name to blit to pmfx // x wait frames before properly dropping gpu resources (textures) // x ratio tracking pmfx // x basic graphs // x auto barriers // x depth stencil as texture // x move 'add' code into startup system - not possible? other ways of creating startup systems? // x copy or clone buffers? (cloning for now) // x setup functions // x update funcions // x render functions // x depth stencil state from pmfx // x blit main buffers to backbuffer // x path utilities // x imgui into hotline context // x remove swap chain dependencies // x reduce cmd buf dependency // x clear from pmfx // x depth buffer pmfx // x views from pmfx // x render passes // x render targets from pmfx // x get docs passing // x automate cargo publish // x pmfx mesh and view // x move hotline context and make generic // x render cube -> render cubes // x focus checks for imgui input hovers etc // x debug rendering 3d // x camera // x Automate docs update // x pmfx Descriptor Layout // x x bindings // x x push constants // x x samplers // x pmfx pipelines // x add dxc and support for sm_6_0 // x Math lib // x bindless in pmfx // x pmfx Input Layout // x debug rendering 2d // x automate pmbuild / pmfx update // x Shaders from IR // x pmfx Shaders // x build scripts // x make const conversion functions // x clean up video textures properly // x av documentation // x bug with bad chars being passed as ext filters // x crash on shutdown not seletcing correct wndproc // x add glyph ranges to imgui info // x font awesome // x fix location of imgui.ini and .gitignore // x video player pause // x open file dialog // x imgui image // x change source // x WMF errors // x swap chain create return result // x single error type? // x CI runner // x Handle CPU access flags for buffers in a nicer way // x Handle buffers with no data // x Readback request doesnt unmap // x keyboard input // x imgui mouse cursors // x Imgui platform // x Imgui multi windows // x enum monitors // x monitor DPI // x Move Imgui to instance instead of procedural api with static // x Imgui renderer // x spelling mistake independent. // x change get srv handle to be Option instead of sential -1 // x Depth Stencil Target // x Depth stencil heap // x state / info defaults // x Render Target Formats From Pass // x Select adapter from name // x winpixeventruntime // x Blend State // x Depth Stencil State // x Raster State // x Topology // x Crash on resize // x Enumerate adapters // x Enumerate Device Info // x GPU Marker // x Compute // x docs on website // x Render Target // x Heaps? + free list? // x device info with default heap sizes // x do we need `static on a trait? (for now removed) // x descriptor table shader visibility // x pipeline result error handling // x srv index from Texture and Buffer // x swap chain create info // x render pass in swap chain // x rtv heaps in device not swap chain // x call super traits = use super::Trait as SuperTrait (to avoid ambiguity) // x render pass result error handling // x texture result error handling // x shaders result / error handling // x buffers result / error handling // x null terminate strings passed to windows-rs ** // x Constant Buffer // x Transition barriers // x Bindless texture array // x Render Passes // x Root Signature == DescriptorLayout ** // x Pipeline->RootSignature // x Input Layout // x Static Samplers // x Push Constants // x Track transitions and manually drop ** // x Push constants // x viewport rect position must be stomped to 0 // x Triangle as test (fix shader compile issue) // x Texture // x Backbuffer readback / resource readback // x how to properly use bitmask and flags? // x remove "Graphics" and move "Instance" to "App" // x Index Buffer // x rust fmt line length // x samples // x PSO // x Shaders from source // x Viewport // x Scissor // x Bind Viewport // x Bind Scissor // x Draw Call // x Resize Swap Chain // x Vsync not working? // x Buffer // x Create Buffer // x Bind Vertex Buffer // x move tests // x move files / modules / libs // x docs