Update README.md

This commit is contained in:
Gregory Wells
2025-07-09 18:19:13 -04:00
parent cbda103fd9
commit 4b8f854b1f

View File

@@ -2,25 +2,25 @@
Cross platform high performace abstracted rendering api Cross platform high performace abstracted rendering api
# Info # Info
Gryphn works to abstract away platform API functions (Vulkan, Metal, D3D11/D3D12, OpenGL, Software) with its own API that aims to mimic the Vulkan API while simplifying away some of its quirks<br /> Gryphn works to abstract away platform API functions (Vulkan, Metal, D3D11/D3D12, OpenGL, Software) with its own API that aims to mimic the OpenGL API but with the use of exensions you can make it function simmilar to Vulkan so you can have the performance<br />
# Supported APIs # Supported APIs
- [x] Vulkan - [x] Vulkan
- [x] Metal* - [x] Metal
- [ ] Direct 3D 11 - [ ] Direct 3D 11
- [ ] Direct 3D 12 - [ ] Direct 3D 12
- [ ] OpenGL - [ ] OpenGL
- [ ] Software - [ ] Software
*Metal support is a little iffy, it works for the most part
# Features # Features
#### Application objects
- Instance: - Instance:
- This loads all of your functions into the runtime and allows them to be called, it takes in the underlying rendering API it wants to use<br /> - This loads all of your functions into the runtime and allows them to be called, it takes in the underlying rendering API it wants to use<br />
- Debugger: - Debugger:
- A debugger, which functions more as a validatior, loads different loaders for Gryphn and overrides function calls to make sure they have the correct arguments passed in.<br /> - A debugger, which functions more as a validatior, loads different loaders for Gryphn and overrides function calls to make sure they have the correct arguments passed in.<br />
- Devices: - Devices:
- Provides a list of system devices, or in OpenGL it fakes a generic "OpenGL device" and then you create your output device with the specified features. - Provides a list of system devices, or in OpenGL it fakes a generic "OpenGL device" and then you create your output device with the specified features.
#### Rendering Objects
- Presentation Queues: - Presentation Queues:
- vulkan swapchain wrapper or in other APIs it just creates a fixed about of textures and swaps between them with a list of unused textures.<br /> - vulkan swapchain wrapper or in other APIs it just creates a fixed about of textures and swaps between them with a list of unused textures.<br />
- Render Passes and framebuffers. - Render Passes and framebuffers.
@@ -50,21 +50,22 @@ Gryphn validation layers are meant to be more specific so there are certain ones
- GN_DEBUGGER_LAYER_FUNCTIONS, this is more for my own sake but when I am writing new backends or layers I may tend to forget to implement a specific function so this layer will just check to make sure that every function is loaded properly. - GN_DEBUGGER_LAYER_FUNCTIONS, this is more for my own sake but when I am writing new backends or layers I may tend to forget to implement a specific function so this layer will just check to make sure that every function is loaded properly.
# Plans # Plans
#### Improved Validation <br /> #### Improved Validation <br />
- More layers - More/Improved validation layers
- The Gryphn Validation layer which will check to make sure object passed in have proper gryphn handles and such - GN_DEBUGGER_LAYER_HANDLES, will check to make sure that handles are valid and you dont do something like attempt to pass something like a gnBuffer handle into a gnDevice handle
- Improved performance
- Validation layers are slow right now and theres not much I can do on the vulkan side to speed them up but I want to work on the gryphn side to make sure they are as performant as possible<br />
- Improved return codes - Improved return codes
- Gryphn return codes are not super specific to the error that has ocurred more of the time returning a GN_FAIlED_TO_CREATE_XXXX value, instead they should look at the APIs error code and return something simmilar. - Gryphn return codes are not super specific to the error that has ocurred more of the time returning a GN_FAIlED_TO_CREATE_XXXX value, instead they should look at the APIs error code and return something simmilar.
#### Device Features <br />
- Physical Devices dont report features that they support at all so the developer can't chose them based on features<br />
#### Performace #### Performace
- Pass info structs in by reference instead of by copy - Pass info structs in by reference instead of by copy
- Remove validation code from certain platform functions, add in validated functions for those cases - Remove validation code from certain platform functions, add in validated functions for those cases
#### Extensions/Supports #### Extensions/Supports
- APIs like OpenGL dont support the full capabilities of vulkan so things like syncronization - APIs like OpenGL dont support the full capabilities of vulkan so things like synchronization
#### Other APIs I currently am planning to move synchronization primatives to be an extension.
- I still need to write backends for the Other APIs gryphn is going to support Planned extensions: <br />
- GN_EXT_SYNCHRONIZATION, my only problem with this extension is that I might be able to fake support for things like semaphores in OpenGL, im not 100% sure yet<br />
- GN_EXT_COMPUTE, while compute pipelines might be a vulkan standard they are not an OpenGL standard so this does need to be an exension <br /><br />
- I will add more exensions as Gryphn grows in complexity, my current biggest task is going to be moving synchronization primatives over into extension land and not a core part of the Gryphn standard. My biggest problem with exentensions is that I don't want them to be something like, this feature is only supported on Vulkan which I think removes part of the reason for my making this project.
#### Standardization
I currently don't write out a gryphn standard for myself but I am planning on creating that before I attempt to implement new features. This is something I should have done from the start.
# Utils library # Utils library
Gryphn comes with its own utlity library, aptly named Gryphn Utils, its written in C with some helper code in C++ that can be enabled by defining GN_UTILS_CPP, more information can be found on the gryphn utils github page, gryphn make extensive use of features in the utils library like Array Lists and 2d/3d types. Gryphn comes with its own utlity library, aptly named Gryphn Utils, its written in C with some helper code in C++ that can be enabled by defining GN_UTILS_CPP, more information can be found on the gryphn utils github page, gryphn make extensive use of features in the utils library like Array Lists and 2d/3d types.
# Usage # Usage