-
Notifications
You must be signed in to change notification settings - Fork 11
Cyfra: Real-time Rendering Pipeline #70
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
rudrabeniwal
wants to merge
37
commits into
main
Choose a base branch
from
cyfra-rtrp-rendering
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.
Open
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
…ries and packages
convert to new Scala 3 syntax
SpirvTools are now integrated into the flow.
* Added "-feature", "-deprecation", "-unchecked", "-language:implicitConversions" to scalacOptions
Whole code base should now use Scala3 new syntax and significant indents. If anyone sees unnecessary {} that I missed, please get rid of them.
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.
This merge request delivers the GSoC 2025 by implementing a real-time Vulkan rendering pipeline supporting interactive scene rendering to windows, data streams, and files.
Key Changes and Features
A new module,
cyfra-rtrp(Real-Time Rendering Pipeline), has been added with the core components of this system.1. High Level Window & Surface Management
WindowManager: A high-level manager (cyfra-rtrp/window/WindowManager.scala) that integrates the window system with the Vulkan context.GLFWWindowSystem: Concrete implementation using GLFW (cyfra-rtrp/window/platform/GLFWWindowSystem.scala) for cross-platform compatibility.SurfaceManager: Manages the connection between native windows and Vulkan rendering surfaces (cyfra-rtrp/surface/SurfaceManager.scala), abstracting away platform specific details.2. Swapchain
SwapchainManager: Manages the lifecycle of the Vulkan swapchain, including creation, recreation on window resize, and image presentation (cyfra-rtrp/SwapchainManager.scala).3. Graphics Pipeline
GraphicsPipeline: Sum up the complex state of a Vulkan graphics pipeline, including vertex/fragment shaders, vertex input descriptions, viewport/scissor state, and rasterization settings (cyfra-rtrp/graphics/GraphicsPipeline.scala).4. Hybrid Compute and Graphics Rendering
GFunction) to generate data or a texture, and then sample that texture in a graphics fragment shader.rtrpExample(cyfra-rtrp/rtrpExample.scala) demonstrates this by running a compute shader each frame to generate an animated texture, which is then rendered onto a quad and displayed in a window. TheupdateDataBufferWithComputemethod shows how aGFunctionis executed to a GPU buffer before the graphics commands are submitted.bufferWidth = 16 looks cuteThis work lays a foundation for future graphics development in Cyfra, enabling a wide range of realtime applications from data visualization to games