GithubHelp home page GithubHelp logo

pikachuxxxx / razix Goto Github PK

View Code? Open in Web Editor NEW
459.0 14.0 26.0 1.4 GB

High Performance Game Engine for Production Pipeline

Home Page: https://pikachuxxxx.github.io/razix-website/

License: Apache License 2.0

C 0.05% C++ 95.95% Batchfile 0.01% Lua 0.19% Python 0.01% GLSL 0.45% HLSL 0.01% Rich Text Format 0.11% NSIS 3.14% HTML 0.07% Pascal 0.02% Assembly 0.01%
game-engine game-development opengl box2d-physics-engine physx-sdk physx gamedev engine3d game game-engine-development

razix's Introduction

About Me

Hi, I'm Pikachuxxx or my friends call me Phani (and so can you). I'm a Graphics Programmer. I love to work on my game engine Razix in my spare time.

Here are some facts about me.

90% of my body is made of games.

Yes, it's true.

I love playing and making games a lot. I live and dream about games all the time

I love working with game engines and also enjoy tinkering with some weird computer graphics stuff.

You know what?

I eat and breathe pixels.

Don't believe me?

Hop into my profile for a supper with me and let's quench our thrist for pixels together.


Languages and Tools

And a Million more libraries....(I'm lying I only know a few)

Social

🕹Play the games I made on :

🚶‍♂️Follow me on :

🤝Connect with me on : LinkedIn Connect

💬 Ask me anything : here

💻Find some of my useful Gists here


👨🏽‍💻Currently Working on :

Razix Engine - High Performance Research Engine for Production Pipeline


Show Your Love ❤️ By Starring my Projects.

Do you love me even more ?

razix's People

Contributors

phani-srikar-29 avatar pikachuxxxx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

razix's Issues

Transform Component UI Editing is adding an unexpected offset of 60 degrees

Editing the Models transform from Razix editor is adding +60 degrees, I have no idea where this offset is coming from even though we are using Quaternions;

Needs more Investigation

============================================================
Razix Engine Stats
Version : 0.30.0
Configuration : [Debug | Release | Distribution]
Release Stage : Development
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.3.194
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 511.316.0

Razix Distribution Build floating point and std::set issues while creating Vulkan queue create infos

Razix engine crashes when the queue create infos are provided in a std::set for different types of queues such as compute, graphics and present families. This only occurs in the Distribution build with complete optimization, investigate and resolve it

Workaround: Using native or std::array doesn't cause any crashes

============================================================
Razix Engine Stats
Version : 0.16.0
Configuration : [Distribution]
Release Stage : Development

RZAPIRenderer::DrawIndexed doesn't work with ImGuiRenderer uses wrong scissor rect

RZAPIRenderer::DrawIndexed() is not able to use the Scissor rect set throught RZAPIRenderer or RZCommandBuffer (I've personally tried both the design changes) both vkCmdSetScissor and vkCmdDrawIndexed need to be set simultaneously in the same scope for it to work. The reason is that scissor rect is not properly set before the draw call for indexed rendering, it's losing that information.

 for (uint32_t i = 0; i < imDrawData->CmdListsCount; ++i) {
                const ImDrawList* cmd_list = imDrawData->CmdLists[i];
                for (int32_t j = 0; j < cmd_list->CmdBuffer.Size; j++) {
                    const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[j];
                    RZDescriptorSet* set = (RZDescriptorSet*) pcmd->TextureId;
                    RZAPIRenderer::BindDescriptorSets(m_ImGuiPipeline, cmdBuffer, &set, 1);
                    // Fix this for Vulkan
                  
                    RZAPIRenderer::SetScissorRect(cmdBuffer, std::max((int32_t) (pcmd->ClipRect.x), 0), std::max((int32_t) (pcmd->ClipRect.y), 0), (uint32_t) (pcmd->ClipRect.z - pcmd->ClipRect.x), (uint32_t) (pcmd->ClipRect.w - pcmd->ClipRect.y));
                    vkCmdDrawIndexed(*cmdBuf, pcmd->ElemCount, 1, indexOffset, vertexOffset, 0);
                    //RZAPIRenderer::DrawIndexed(cmdBuffer, pcmd->ElemCount, 1, indexOffset, vertexOffset, 0);
                    indexOffset += pcmd->ElemCount;
                }
                vertexOffset += cmd_list->VtxBuffer.Size;
            }

ImGui only work if RZAPIRenderer::DrawIndexed is not used

============================================================
Razix Engine Stats
Version : 0.30.0
Configuration : [Debug | Release | Distribution]
Release Stage : Development
Release Date : 6-3-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.3.194
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 511.316.0

Extreme screen tearing when camera moves super fast - Synchronization issues with Vulkan swapchain frame data

Current state of swapchain image synchronization is causing the image to tear when the camera moves really abruptly as shown below:

IMG_0052.mov

Swapchain images acquire and present code needs to be refactored to check for the image that is returned and is ready for rendering is not the one being presented, use 3 fences to check against the semaphores and fences of the 2 frames in flight as done in vulkan-tutorial.com website, current implementation is inspired by sascha's vulkan examples

============================================================
Razix Engine Stats
Version : 0.20.1
Configuration : [Debug | Release | Distribution]
Release Stage : Development
Release Date : 9-1-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.2.186
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 497.116.0

SPIRV Reflection crashing due scalar destructor heap corruption

While reflecting shaders spirv priitives and rzaizx data types which is causing heap corruption while pushing into vectors

============================================================
Razix Engine Stats
Version : 0.30.0
Configuration : [Debug | Release | Distribution]
Release Stage : Development
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.3.225
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 512.316.0

spdlog not outputting to console when initialized from WinMain

FInd a way to show the console even when using and Windowed app or connect to some ImGui console

============================================================
Razix Engine Stats
Version : 0.16.0
Configuration : [Distribution]
Release Stage : Development

OPTICK_FRAME causes Access violation executing location error while binding socket

check bombomby/optick#165

============================================================
Razix Engine Stats
Version : 0.30.0
Configuration : [Debug | Release | Distribution]
Release Stage : Development
Release Date : 6-3-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.3.194
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 511.316.0
OS Build : 22000.675

Cannot load Vulkan textures larger than 1024x1024 in dimenstion

Staging buffer and vkCmdCopyBufferToImage cannot copy image from staging buffer to GPU host visible memory if the dimension is larger than 1024x1024 size. Also the image size is being computed wrong for some reason.

============================================================
Razix Engine Stats
Version : 0.30.0
Configuration : [Debug | Release | Distribution]
Release Stage : Development
Release Date : 6-3-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.3.194
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 511.316.0

Blackboard can't track different versions of read/write data driven resources

cloning of resources in StringBased blackboard won't track older read/write IDs FIX IT!

CLONING DOESN'T WORK IN DATA DRIVEN RENDERING!!!

PLAUSIBLE DESING FIX: Use the version prefix when adding to blackboard and use that while retrieving this way we can have uniqueness in the unordered map

Workaround: have unique resources names

Design better strategy for Descriptor sets management

Either make descriptors sets a part of shader class and we provide the binding points manually and uses the reflection data to verify it or we use tables and we manually add them per pass idk find some better way to do it. Needs better design

DirectX 11 with GLFW window doesn't move

check message pump connection as preliminary place; Needs more investigation to describe the issue better

============================================================
Razix Engine Stats
Version : 0.16.0
Configuration : [Distribution]
Release Stage : Development

Vulkan swapchain and RT layout transition validation error

The swapchain image is in VK_IMAGE_LAYOUT_UNDEFINED layout, but to present the image, it should be in either VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR.

[VULKAN]  - Validation ERROR :
message ID : -945112042
ID Name : VUID-VkPresentInfoKHR-pImageIndices-01296
Message : Validation Error: [ VUID-VkPresentInfoKHR-pImageIndices-01296 ] Object 0: handle = 0x22b53b62620, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xc7aabc16 | vkQueuePresentKHR(): pSwapchains[0] images passed to present must be in layout VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR but is in VK_IMAGE_LAYOUT_UNDEFINED. The Vulkan spec states: Each element of pImageIndices must be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pSwapchains array, and the presented image subresource must be in the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout at the time the operation is executed on a VkDevice (https://github.com/KhronosGroup/Vulkan-Docs/search?q=)VUID-VkPresentInfoKHR-pImageIndices-01296)

We can manually transition the layout of swapchain image to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR before presenting to resolve this issue using memory and pipeline barriers, however now VK_IMAGE_LAYOUT_PRESENT_SRC_KHR is not a layout fit for rendering in the next frame. So before rendering, we need to transition the image back into VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL. Hence it must be done once before presenting and again after presenting to make sure the format of the swapchain images is properly transitioned.

============================================================
Razix Engine Stats
Version : 0.20.1
Configuration : [Debug | Release | Distribution]
Release Stage : Development
Release Date : 9-1-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.2.186
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 497.116.0

Bindless Textures causing weird artifacts in PBR rendering

When we enable bindless textures with a common binding pool as the same binding point for the 2d, 3d and cubemap textures, especially in PBR pass we can see exaggerated Fresnel effect and the textures kinda look warped around the poles of the sphere

Fixed resolution rendering is causing ImGui viewport issues

Using a fixed RenderTarget resolution with imGui is causing viewport issues because of mismatch with the window resolutuion and rt size, the viewport and scissor rect is wrong and causing offset while rendering and input interaction

Some fixes like changing displaySize and FBSize of imgui need to be properly reworked.

Linux build failing

Hi,
I encountered a few issues when building Razix on Linux:

  1. Some MSVC specific extensions are used(e.g omitting template on dependent types)
  2. Some platform specific stuffs(e.g macros)
  3. Some APIs are only implemented for Windows(e.g RZSplashScreen, entry point)
  4. Headers are not self-contained(not fatal, but it makes working in VSCode + clangd harder)
  5. Build system related issues(e.g hard coded paths)
  6. Some extensions use deprecated Qt APIs that are removed in Qt6.
  7. Tracy's embedded imgui conflicts with our imgui(can be fixed by adding tracy/ prefix when including tracy headers).

Any plan on fixing these? I am happy to work on these.
Thanks!

RHI frame sync is CPU bound for vulkan backend

The current profiling data shows that the RHI is currently CPU bound, taking over 40ms for Sponza Scene on a 2K monitor. it does hit 60fps at 1080p but the main culprit is the vkWaitForFences taking as long as upto 4-5ms in some frames.

Investigate -> study other vk examples -> make better design and remove the CPU bound dependency.

Here is the tracy profile SS for reference:
60pfs@1920x1080 RT Sponza Sandbox
image

24fps@2560x1440 RT Sponza Sandbox
image

As you can see the vkWaitForFences is taking upto as much as 70% of the frame time.

Texture disappears as camera moves away

Sandbox___Razix_Engine_-_0 20 0_Development__Vulkan____Debug-windows-x86_64_Thu___13-01-2022_10_36_37_AM

Issue 1: As shown in the above image as the camera moves away from the Quad we can see the texture disappearing and blackens out, the reason for this unexpected behavior is unknow

[Could be resolved if swapchain reconstruction and resize logic is added]

Render Doc Capture Info:
unknown
(The depth texture is visible just the range is different needs to calibrated and can be seen in render doc)

Razix Engine Stats
Version : 0.20.0
Release Stage : Development
Release Date : 9-1-2022
OS : Windows 10 Home
Processor : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.60 GHz
Vulkan API Version : 1.2.186
GPU Name : NVIDIA GeForce RTX 2060
Vendor ID : 4318
Device Type : DISCRETE GPU
Driver Version : 497.116.0

Improve ImGui shaders reflection in GLSL

imGui shaders reflection using SPIRV-Reflect in glsl produces wrong stride of 32 because the color is supplied as U32 but we have vec4 on the glsl side and it returns a format R32G32B32A32_UNORM instead of `R8G8B8A8_UNORM.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.