-
Notifications
You must be signed in to change notification settings - Fork 0
Implemented functionality up to chapter 16 inclusive #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
navkagleb
wants to merge
315
commits into
main
Choose a base branch
from
dev
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Move DescriptorHeap outside of DescriptorManager class 2. Bind Descriptor throw Context class 3. Add parsing of DescriptorHeap::Type to dx12_common 4. Apply new api for necessary classes
1. Init std::shared with std::make_shared 😆 2. Add destructor to LayerStack 3. User alias for LayerStack::m_Layers
1. Remove window parameter from ctors 2. Don't handle events 3. Move helped structs to layer class to prevent meme from 204f17f
1. Add ImGui BottomPanel to ImGuiLayer and move FPS to it 2. Remove FPS from appliction and setting it to window title
Add DynamicIndexingLayer class to test this technique
1. Add Context::WriteToBuffer method (replace CopyToBuffer because it uses UpdateSubresources) 2. Add UploadBuffer to Context class (makes it "global") 3. Remove data uploading from Mesh class 4. Remove other rubbish from Mesh class and mesh.hpp file 5. Small refactoring of UploadBuffer class
1. Don't upload data in Texture2D::LoadFromDDSFile method. Move it to client side by returning std::vector<SubresourceData> 2. Add Context::WriteToTexture method. Upload data to texture using subresources 3. Add more fields to Texture2DConfig. For now most of enging backend don't use it :). But it will be fixed soon 4. Minor refactor of Device::RegisterTexture method. In future refactor one more time 5. Refactor all layers for new api of texture uploading 6. Permanently remove UploadBuffer from client side!
The main goal of this commit is refactoring Resource System 1. Remove IndexBuffer, VertexBuffer, UploadBuffer and ConstantBuffer classes 2. Make from Texture2DResource TextureResource class 3. Add some enums to dx12_common 4. Using DX12 prefix for unity in all D3D12 classes (rewrite native prefix, d3d12 and etc) 5. Apply all layers and passes to new api of Resource System
1. Implement Context::CommandListScope class. In ctor reset command list and in dtor execture it to command queue 2. Small refactoring of Context class 3. Apply new api for layers
1. Release back buffers in swap chain before resize buffers 2. Clear views in all layers and in all passes before after creating depth stencil 3. Small refactoring of swap chain (remove bool return value from some methods)
1. It is possible to give the CameraController a Camera from outside 2. Apply all layers for new api
1. Move Camera implementation from sandbox to spieler project 2. Move some implementation to Camera class 3. Add m_InverseView, m_InverseProjection, m_ViewProjection, m_RightDirection to Camera class 4. CameraController class make more cleaner 5. Apply all layers for new api
- Added IsAlphaTestRequired flag to benzin::Material for future use (separate rendering opaque and alpha tested meshes) - Remove pixel shader as mandatory shader in GraphicsPso
- Used streams to create D3D12 pipeline states - Introduced new PSO type - Mesh. Graphics PSO renamed to Vertex - Refactored PsoManager class
- Added ProceduralGrassPass class - Implemented GBuffer struct as helper struct for several passes - Refactored geometry_pass.hlsl shader and GeometryPass class - Moved ThoudandSeperatorApostrophe3 to Logger class to avoid duplications - Added missed mesh shader target for DXC compiler - Added mesh shader commands to CommandList class
- Added support of loading texture array from DDS file - Added support of uploading texture array to GPU - Some minor refactor in CmdList - Added params to RayTracing_ShadowSettings
- Added method to buffer to map readback range - Due to this refactor profiler readback logic
- Added world frustum to camera - Refactored FlyCameraTool - Added world frustum planes to camera consts
Implemented frustum culling in amplification shader using bounding sphere
- Now mesh has unified vertex and index buffers (no more std::vector<MeshData>) - Adapted GltfReader for it - Removed stats calculation in Scene and RayTracing_Scene classes. Instead stats calculation will be in SceneStatsTool - Removed IndexOrder from rasterizer state. Use bool instead - Refactored GeometryPass to use new mesh data side
- Used SubRange instead of ...Offset and ...Count in MeshDrawRange
- Reduced Geometry PSO permutation (no index order for rasterizer state) - Moved calc bounding sphere of DrawRange to separate function (GenerateBoundingSpheres)
Added grouping draw ranges / instances by material index, primitive topology and ObjectToLocal matrix. This reduced rendering time for Sponza (103 instances to 25)
Allocate a constant buffer in advance for each frame, rather than when initializing render passes
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.