diligentgraphics / diligentcore Goto Github PK
View Code? Open in Web Editor NEWA modern cross-platform low-level graphics API
Home Page: http://diligentgraphics.com/diligent-engine/
License: Apache License 2.0
A modern cross-platform low-level graphics API
Home Page: http://diligentgraphics.com/diligent-engine/
License: Apache License 2.0
Right now the suffix is hard-coded. To add flexibility, the suffix should be configurable through shader creation attributes.
This will avoid extra conversion from HLSL to GLSL
This will explicitly specify which command queue will be used to initialize the resource
Hello, every time I call mSRB->GetVariable(#, "#)->Set(Tex_SRV)
an exception is thrown on every renderer.
I traced all of them to a "RefCntAutoPtr" constructer.
RefCntAutoPtr(IObject* pObj, const INTERFACE_ID& IID) noexcept
: m_pObject(nullptr)
{
if(pObj)
pObj->QueryInterface( IID, reinterpret_cast<IObject**>(&m_pObject) ); //<<This Line
}
The constructor is called from these location:
On D3D12.
On D3D11.
On Vulkan.
It is worth noting that I noticed every ITextureView
I create has the same address in memory...
c:\program files (x86)\microsoft visual studio\2017\professional\vc\tools\msvc\14.13.26128\include\thread(8): fatal error C1189: #error: is not supported when compiling with /clr or /clr:pure.
The Metal back-end stub is located here
Allow creating multiple swap chains attached to different windows.
Hello, I noticed GraphicsAccessories.h includes depend on "Additional Include Directories", Which cause errors with engines who don't include those directories.
/// Defines graphics engine utilities
#include "GraphicsTypes.h"
#include "Shader.h"
#include "Texture.h"
#include "Buffer.h"
#include "RenderDevice.h"
#include "DebugUtilities.h"
Should be:
/// Defines graphics engine utilities
#include "../../GraphicsEngine/interface/GraphicsTypes.h"
#include "../../GraphicsEngine/interface/Shader.h"
#include "../../GraphicsEngine/interface/Texture.h"
#include "../../GraphicsEngine/interface/Buffer.h"
#include "../../GraphicsEngine/interface/RenderDevice.h"
#include "../../../Platforms/Basic/interface/DebugUtilities.h"
This will make Vulkan implementation more efficient
Add begin transition/end transition flags to StateTransitionDesc
structure. In Vulkan backend, submit barrier at either begin or end stage.
Hi! I was trying to build DiligentCore and got "Compiler Error C2440" in few places in code.
'''
c:\diligentcore-master\primitives\interface\FormatString.h(68): error C2440: 'initializing': cannot convert from 'initializer list' to 'Diligent::MemorySizeFormatter'
C:\DiligentCore-master\Graphics\GraphicsEngineVulkan\src\VulkanUploadHeap.cpp(81): error C2440: 'initializing': cannot convert from 'initializer list' to 'Diligent::VulkanUploadHeap::UploadPageInfo'
'''
Only GL bakend was sucessfuly compiled all other are failed (
I'm use: VS2015, Win10, i7
Hello, I found great difficulty in implementing Diligent into my Engine due to its heavy abstraction of shader creation. Let me explain to you.
To create a shader we need only one thing (ShaderCreationAttribs) which hides all real data from the user/client.
A typical game engine does the following:
1- Compile shader from source, then translate it into other language if necessary (ex: HLSL to GLSL)
2- Reflect all data necessary.
3- Combine the compiled shader and its reflected data to a structure (aka ShaderBlob)
4- Create GPU shader in the graphical backend.
So the engine have full access to (Compiled shader, shader reflected data and the GPU shader program).
Diligent hides compiled shader and requires the user to query reflection data by IShader->GetVariable() which isn't really practical, a better implementation would be grouping all reflection data into a class.
Plus, Diligent require engines declare the type of a variable at the shader creation that makes things worse.
In my opinion shader creation should be separated to multiple stages/functions that will ease integration into engines.
I want to hear your suggestion, I am ready to modify diligent and do my best.
Similar to Vk implementation
This component is large and should be optional. If an application does not need to compile HLSL shaders at run time, it should not pay the price of increase executable size.
dx11: D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS
Implement root signature cache to avoid creating duplicate root signatures for PSOs sharing the same shader resource layout.
If the bytecode used the default entrypoint name need to be from bytecode
To be consistent with D3D
D3D12 ERROR: ID3D12CommandList::CopyTextureRegion: D3D12_SUBRESOURCE_FOOTPRINT::RowPitch must be a multiple of 256 (aka. D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) and greater or equal to the pitch implied by the width. RowPitch is 16, and must be greater or equal to 16 when D3D12_SUBRESOURCE_FOOTPRINT::Width is 4 and D3D12_SUBRESOURCE_FOOTPRINT::Format is R8G8B8A8_TYPELESS. [ RESOURCE_MANIPULATION ERROR #868: COPYTEXTUREREGION_INVALIDSRCROWPITCH]
Diligent Engine: ERROR: Debug assertion failed in Diligent::CommandContext::Close(), file commandcontext.cpp, line 94:
Failed to close the command list
This will be an abstraction for root signature/pipeline layout.
Besides that:
Vulkan backend is already ported to MacOS. It also builds fine on iOS, but it does not link properly with MoltenVK libraries: none of Vulkan functions are resolved.
This will trigger the context to release all resources, make it explicit and will allow do all the related work in a free-threaded manner
Also. move command queue and all related logic to device context
The leaks are caused by a bug in glslang:
KhronosGroup/glslang#1554
This will drop the requirement that all dynamic resources must be unmapped at the end of the frame. Each context will manage its own dynamic resource lifetimes
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.