Open
Conversation
…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.
ef11eaa to
b605d8a
Compare
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
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