Commit Graph

442 Commits

Author SHA1 Message Date
Kah Wei 1fc2897150 Added SHVec4U and modified SHMesh to use SHVec4U instead of uint32_t 2023-01-16 16:30:15 +08:00
Brandon Mak 09911cc50c Merge remote-tracking branch 'origin/main' into SP3-1-Rendering 2023-01-16 15:33:37 +08:00
Brandon Mak 1526176c58 Shadows WIP 2023-01-16 15:06:46 +08:00
Kah Wei b603044579 Fixed validation errors caused by debug draw and fixed SHDebugDraw::WireCapsule not being static 2023-01-16 14:39:35 +08:00
Kah Wei 7ecb8b11ad Added support for rendering bone-less models using the animated shader 2023-01-13 21:26:05 +08:00
Kah Wei d1a41ea194 Fixed raccoon not rendering for animated material 2023-01-13 20:33:25 +08:00
Kah Wei 74d6e5cee7 SHPipelineLibrary now sets the pipeline layouts correctly 2023-01-13 18:14:40 +08:00
Kah Wei d1ab595126 Fixed certain crashes when assigning rig and clip 2023-01-12 20:04:49 +08:00
Brandon Mak f217562fef Shadows are sort of working 2023-01-11 20:04:53 +08:00
Brandon Mak 4cd9a6cea0 shadows WIP 2023-01-11 10:35:29 +08:00
Brandon Mak 4a06032bea Shadows WIP 2023-01-11 08:25:38 +08:00
Brandon Mak 9538636af6 Shadows WIP 2023-01-10 01:47:10 +08:00
Brandon Mak cb9223db0b Enabled partially bound bit for descriptor sets with variable size
- Shadow maps can be sampled from compute shaders
2023-01-09 11:06:10 +08:00
Brandon Mak 4928ed4bcf Will update commit message tomorrow. Fuck Vulkan. *KW in BG: DiReCtX*
- Changed RenderGraphNodeNames to RenderGraphEntityNames
- Managed to get shadow maps into desc sets
2023-01-09 09:44:40 +08:00
Kah Wei 686e141efa Fixed comment for SHPrimitiveGenerator::LineCapsuleCap 2023-01-08 01:46:52 +08:00
Kah Wei f44e7b7a1c Debug draw capsule now works with different orientations 2023-01-08 01:43:40 +08:00
Kah Wei 98bfbc1048 Added DrawWireCapsule for debug draw (doesn't support orientation changes yet) 2023-01-08 01:06:50 +08:00
Brandon Mak 77a5829fc9 Shadows WIP 2023-01-07 17:45:49 +08:00
Brandon Mak 8bb406e17f Shadows WIP
- new subpass generated for shadow maps now use light's renderer
- Added support to pass in custom binding and location for vertex attributes
- SHLightingSubSystem GetViewMatrix uses SHMatrix::LookAtLH but with hard-coded values for now. This will eventually be replaced with real position and target values
- Created new shadow map rendering vertex input state.
2023-01-07 15:27:08 +08:00
Brandon Mak 3e01c9e80a shadows WIP 2023-01-07 12:01:09 +08:00
Brandon Mak d3cd36984d Shadow map WIP 2023-01-07 07:42:42 +08:00
Brandon Mak 19f9b67550 Shadow map WIP
- Added companion subpass object to subpass
- Lighting sub system updates a light's renderer when it is a valid handle
- Light component's renderer will be created in the graphics system event when a light's shadow is enabled
2023-01-06 10:40:19 +08:00
Kah Wei 9d17328262 Added bone animation supported vertex shader 2023-01-04 18:20:04 +08:00
Kah Wei 7da89def50 Refactored SHBatch to support animation data in the same descriptor set 2023-01-04 17:42:02 +08:00
Kah Wei 3ca6859fcb Merge branch 'main' into SP3-17-animation-system
# Conflicts:
#	SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp
#	SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.h
#	SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp
2023-01-04 15:52:08 +08:00
Brandon Mak db87bea002 Added pre compute functions for render graph node compute 2023-01-04 09:58:29 +08:00
Brandon Mak 87b2103f6e Shadows WIP 2023-01-03 22:05:36 +08:00
Sri Sham Haran 562c9e2064 Merge branch 'main' into SP3-4-Editor 2023-01-03 20:29:09 +08:00
Kah Wei 06b7db14d5 Added code for bone matrices 2023-01-03 18:57:14 +08:00
Brandon Mak b771cdbfc6 Added barrier for shadow maps 2023-01-03 07:41:37 +08:00
Kah Wei c1910db2af Fleshed out SHAnimatorComponent 2023-01-03 00:23:37 +08:00
Brandon Mak ef8867a7a5 Shadows WIP 2023-01-02 22:16:35 +08:00
Brandon Mak 7f8dc2b647 Added constants for render graph node names
- Fleshed out event function to add resource and subpass to shadow map render graph node when shadow is turned on
- Added support for linking resources and subpasses to render graph at runtime
2023-01-02 18:24:29 +08:00
Brandon Mak 03becd8e47 Removing resources now remove subpasses and computes involved
- Added an empty node in the render graph for shadow mapping
2023-01-01 13:59:10 +08:00
Brandon Mak d7754e125d Wrote remove resource for render graph (untested) 2023-01-01 12:02:51 +08:00
Brandon Mak 118ad33109 Got rid of SHEnumWrapper 2022-12-30 15:54:45 +08:00
Kah Wei ce16ca6f8d Exposed transform and MDI buffers in SHBatch and exposed Batches in SHSuperBatch 2022-12-30 15:29:17 +08:00
Brandon Mak 8e2c32d110 Graphics refactor more or less tested and working
- Descriptors sets are now independent from a set index. Camera matrices for example can be bound to set index 1 for the batching system but index 2 for compute shaders.
- Truly global descriptors sets (misc data, textures and light data) are now manually bound to a global static class that allows retrieval of these sets to be bound whenever in the middle end. 
- Predefined descriptor set layouts (but not truly global such as camera data, materials and font) have their layouts predefined in a class and used for descriptor set initialization within the middle end. The sets themselves are allocated using these layouts (also accessible globally). 
- Descriptor sets that are more flexible with their bindings such as render graph resources are introspected from shaders and not predefined at all (though their types are recorded in SHGraphicsPredefinedData to avoid magic numbers when binding descriptor sets in some systems).
- Systems now have fixed mappings for descriptors used in shaders and these are defined in SHGraphicsPredefinedData. Batching for example has 3 fixed descriptors: Static global bound at 0, camera data bound at 1, materials bound at 2.
- Viewports no longer contain renderers and renderers no longer contain render graphs. The graphics system only has 1 render graph and subpasses can have both viewports and renderers bound to them to have options for viewport/scissor and camera settings. 
- Light data is now bound before every compute system.
- There is only 1 render graph in the entire system and contains only 6 nodes: G-Buffer pass (with lighting compute pass), debug draw with depth, debug draw, screen space pass, dummy pass for transition to input attachment for imGui and lastly the imGui pass for rendering editor to swapchain.
2022-12-29 14:29:25 +08:00
Brandon Mak 99e7dbfa01 WIP 2022-12-28 20:47:20 +08:00
SHAM-DP 51c9058ab8 Window now maximized by default
Application now loads working scene if run with editor
Added editor config to save:
- Window size
- Window Maximized
- Working Scene
- Editor Style
2022-12-28 17:21:08 +08:00
Brandon Mak b84364ffe9 Minor changes
- Render Node Compute now has access to camera to send camera data to shaders
- Fonts now have functions to bind descriptor set
2022-12-28 12:43:40 +08:00
Brandon Mak 3bfec1e54f WIP will update later, afraid for BSOD again
- All Shaders now take in a single projection matrix. The type of projection matrix is dependent on the SHRenderer projection type.
- SHGraphicsSystem now only has a single render graph.
- SHGlobalDescriptorSets now store a descriptor set for static global data and a handle to the lighting system. Functions to bind their descriptor sets are also available. 
- Font desc set layout is added back into SHPredefinedData because while its possible to introspect the layouts from the shaders, the layouts is required beforehand to generate the font objects
- SHRenderers and SHViewport are now 2 separate entities, both passable to SHSubpass to be contained and used to set viewport/scissor and send camera matrices to shaders.
-  SHRenderer descriptor sets are now updated separately from the binding. They happen directly before the render graph executes.
2022-12-28 12:19:30 +08:00
Brandon Mak 5f2fa7fdf5 WIP
- Created a class that allows custom mappings of descriptor types to set indices
- SHPredefinedData now contains objects of the above class with predefined mappings for the different sub systems in the Graphics System. 
- These mappings are also accompanied with descriptor set layout vectors that are only for that system. This helps the sub systems have access to these layouts easily without having to pass them around. 
- Created another class to manage global descriptor sets such as lights. 
- Modified pipeline layout creation code to take in the correct descriptor set layouts.
2022-12-26 09:28:15 +08:00
Brandon Mak b035582b30 Renamed SHGraphicsGlobalData to SHPredefinedData
- SHPredefinedData now contains the font data descriptor set layout as well 
- Added a function for SHPredefinedData to retrieve descriptor sets based on a bitfield
- Modified descriptor sets to not be tied to a set index anymore
- Descriptor set layout doesn't have a set anymore
- Removed desc set index constants from SHGraphicsConstants since they aren't really needed anymore
2022-12-25 14:32:55 +08:00
Kah Wei 51479d2bd0 Fixed bug where meshes added to the mesh library will not have correct corresponding "null" vertex bone weights and indices 2022-12-16 21:43:33 +08:00
Kah Wei 12a46c4266 Merge branch 'main' into SP3-17-animation-system
# Conflicts:
#	SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp
#	SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp
#	SHADE_Engine/src/Graphics/MiddleEnd/Meshes/SHPrimitiveGenerator.cpp
#	SHADE_Engine/src/Graphics/MiddleEnd/Meshes/SHPrimitiveGenerator.h
2022-12-16 12:59:11 +08:00
Kah Wei 8978515cb9 Reworked SHDebugDraw to fit new interface of SHDebugDrawSystem 2022-12-15 23:25:49 +08:00
Kah Wei eb06eebc32 Added ability to debug draw circles 2022-12-15 20:30:20 +08:00
Kah Wei 78575b11e4 Added debug draw of wire spheres, filled cube and filled sphere 2022-12-15 18:08:12 +08:00
Kah Wei b6ab7b44d9 Renamed DrawWireBox to DrawWireCube 2022-12-15 02:19:30 +08:00
Kah Wei 98ff16d00c Added deebug drawing of cubes of any transform 2022-12-15 01:45:44 +08:00
Kah Wei 06cc969658 Reworked DebugDraw system (only lines now) 2022-12-14 01:20:12 +08:00
Kah Wei c84e33731b Fixed crash which occurs when changing the material of an object twice in a row 2022-11-25 22:24:30 +08:00
Xiao Qi b7b3301158 Added isDirty copy in move ctor for SHBatch 2022-11-24 02:01:41 +08:00
Kah Wei 6261661ef6 Added potential fix for Vulkan buffer creation crashes from SHBatch 2022-11-23 19:30:51 +08:00
Kah Wei 20a1fdc16e Fixed Application::Close() not closing but instead minimizing the window 2022-11-23 17:03:57 +08:00
XiaoQiDigipen 6161d81c4a
Merge pull request #256 from SHADE-DP/Fix-NoGPUClarity
Added explicit error check for when no supported GPUs are available to use
2022-11-23 13:48:37 +08:00
Xiao Qi 0edd2f24e3 Added VS and FS shaders to tile singular textures
Added shader stage flag bit for vertex shaders
2022-11-23 13:02:33 +08:00
Kah Wei 1a26b0ac70 When no GPU is detected, a proper exception describing it is now thrown instead of failing silently 2022-11-23 09:57:55 +08:00
maverickdgg a57145b510 Merge branch 'main' into SP3-20-UI-System 2022-11-22 20:39:39 +08:00
maverickdgg a612e71f0c Added Buttons, Added Canvas Scaling matrix, Added Serialization of buttons and camera arm 2022-11-22 20:39:15 +08:00
Kah Wei 7d692061fb Reworked how Materials are handled on C# 2022-11-22 17:23:50 +08:00
Xiao Qi 3b6d1c815d Merge branch 'main' into SP3-17-animation-system 2022-11-22 13:55:17 +08:00
Brandon Mak cf0b94e97d Merge branch 'main' into SP3-1-Rendering 2022-11-22 10:50:04 +08:00
Brandon Mak dfe86ce7db Fixed resizing bug 2022-11-22 10:43:59 +08:00
Brandon Mak 4377972315 Added functionality for graphics system to render to swapchain image
- Added functionality for graphics system to render to swapchain image when SHEDITOR is disabled. This is done via rendering a simple quad on screen and using an input attachment as a texture to the shader.
2022-11-22 10:10:26 +08:00
Brandon Mak 964b375ccd Write to swapchain image without SHEDITOR defined WIP 2022-11-22 09:05:56 +08:00
Kah Wei af2ad6cc80 Merge branch 'main' into SP3-6-c-scripting 2022-11-21 20:59:08 +08:00
Kah Wei 4172362790 Renamed SHTextRenderer to SHTextRenderable 2022-11-21 20:35:31 +08:00
Brandon Mak cd6edeeee4 Merge branch 'main' into SP3-1-Rendering 2022-11-21 20:29:10 +08:00
Kah Wei 9cc008eaf4 Fixed ghosts of a renderable being rendered when a material is changed 2022-11-21 20:21:08 +08:00
Kah Wei 611744f5d4 Fleshed out SHAnimationComponent more and added preliminary implementation of SHBatch for bone data 2022-11-21 15:09:15 +08:00
Kah Wei 1ff8c9715d Merge branch 'main' into SP3-17-animation-system 2022-11-21 12:15:57 +08:00
Brandon Mak 485b60c6d8 Added debug check in SHGraphicsSystem to compile assets only in debug 2022-11-21 00:39:13 +08:00
Xiao Qi 1666a0113b Removed test lines for shader compile in graphics system 2022-11-21 00:29:46 +08:00
Brandon Mak 5d3603ac7d Text Renderer Component serialization 2022-11-20 22:24:24 +08:00
Brandon Mak c686954c77 Implemented Text Rendering
- The Text Renderer Component serialization and reflection onto inspector is not in yet, but there is basic functionality.
- Updated shaders
- Topology for text rendering is changed to triangle fan. Front facing for primitives is clockwise. Vertex state has both the positionOffset and glyphIndex attribute set as instanced.
-  Freetype instance is now initialized in InitBoilerplate
- SHCamera no longer calling SetPerspective/Ortho inside HandleResize
- Font Geometry is now loaded in SHFontLoader into SHFontAsset fontGeometry variable.
2022-11-20 19:03:12 +08:00
Brandon Mak 575132c4bb Added UI Component check in SHBatch
- UI Component shader changes
- Fixed picking issue
2022-11-20 01:45:14 +08:00
Kah Wei 841948b82c Added support for Bone Weights and Bone Indices vertex attributes for meshes 2022-11-20 01:33:55 +08:00
Brandon Mak d55adcdfe4 Merge remote-tracking branch 'origin/main' into UI_Integration 2022-11-19 22:08:16 +08:00
Brandon Mak 6d1f30e05b Merge branch 'SP3-1-Rendering' into UI_Integration 2022-11-19 21:45:21 +08:00
Brandon Mak 223276dd87 Created partial functionality to render a texture to swapchain image 2022-11-19 21:44:41 +08:00
Xiao Qi c4be9b1cba Initial commit, change of data structs containing data for model and animation assets.
Changed all other references to previous mode and mesh asset names
2022-11-19 21:16:24 +08:00
Kah Wei 92b1c6676b Merge branch 'main' into Fix-BatchCrash 2022-11-19 18:26:37 +08:00
Kah Wei b2dc440d03 Fixed bug where moving objects stopped moving after chanigng their material's shader 2022-11-19 18:26:11 +08:00
Kah Wei 58e6a3c4c2 Re-aded ability to change shaders
Bugged, replacing shaders results in object being rendered in the old position
2022-11-19 17:30:48 +08:00
XiaoQiDigipen bd3b643c19
Merge pull request #228 from SHADE-DP/Fix-BatchCrash
Fixed crash caused when loading more than one graphics pipeline
2022-11-19 16:26:37 +08:00
Kah Wei f3a44d2ead Fixed crash caused when loading more than one graphics pipeline 2022-11-19 16:11:07 +08:00
Brandon Mak 798803cf81 UI WIP 2022-11-18 22:03:21 +08:00
Kah Wei 27413c380e Renderables now no longer render if disabled 2022-11-18 21:59:18 +08:00
Kah Wei 5ec8475842 Merge branch 'main' into SP3-1-RenderOnlyActive 2022-11-18 21:34:28 +08:00
Brandon Mak 03ce142137 Merge remote-tracking branch 'origin/main' into SP3-1-Rendering 2022-11-18 16:37:06 +08:00
Brandon Mak 66f33554a3 Tested adding text component to entities 2022-11-18 16:35:49 +08:00
Kah Wei 19bc90845f Added additional checks for SetProperty() of Material and MaterialInstance 2022-11-16 21:01:51 +08:00
Kah Wei 8869b42db2 Fixed memory corruption in SHSubpass 2022-11-16 21:00:27 +08:00
Kah Wei c5bca4111b Fixed validation error caused by deleting empty batches 2022-11-16 19:23:26 +08:00
Kah Wei f0c09817ce EnsureBufferAndCopy utility functions now avoid resizes if new size is smaller or equal 2022-11-16 17:49:11 +08:00
Kah Wei 29b4465dfd Split pre-rendering tasks to a PrepareRenderRoutine 2022-11-16 17:48:15 +08:00
Kah Wei 506b8836fe Materials now keep track of their modified state and associated MaterialInstances keep track of changes to their base 2022-11-16 17:46:36 +08:00
Brandon Mak f991e7b227 Fixed some text shaders and changed some image parameters
- SHApplication has a font compiler exe call to test compiling a sample font
- SHVkImage now takes in a vector instead of a span for mip offsets (fuck it, copy the mip offset. The RAM can cry about it).
- Removed font data descriptor set layouts from graphics global data
- FONT_DATA set index is changed to 4 instead. This clashes with Render graph resource set index but it won't matter. 
- Added entity ID render graph resource to scene render graph
- SHFont format for images is now R8G8B8A8UNorm
2022-11-16 16:57:08 +08:00