38个版本
0.11.4 | 2024年7月17日 |
---|---|
0.11.2 | 2024年2月27日 |
0.9.1 | 2023年12月29日 |
0.9.0 | 2023年9月8日 |
0.1.0 | 2020年7月5日 |
#4 在 渲染引擎
每月40次下载
5MB
16K SLoC
Screen 13
Screen 13 是一个灵感来自 QBasic 的简单易用的Vulkan渲染引擎。
[dependencies]
screen-13 = "0.11"
概述
Screen 13 使用智能指针提供高性能的 Vulkan 驱动程序。驱动程序可以手动创建用于无头渲染,或使用内置的事件循环抽象自动创建。
use screen_13::prelude::*;
fn main() -> Result<(), DisplayError> {
EventLoop::new().build()?.run(|frame| {
// It's time to do some graphics! 😲
})
}
用法
Screen 13 提供了一个完全通用的渲染图结构,用于简单和静态类型地访问渲染过程中使用的所有资源。`RenderGraph
` 结构允许将 Vulkan 智能指针资源绑定为“节点”,这些节点可以在图中任何位置使用。该图本身与交换链访问无关,可用于执行通用命令流。
渲染图的特性
- 计算、图形和光线追踪管道
- 自动Vulkan管理(渲染过程、子过程、描述符、池等)
- 自动渲染过程调度、重排序、合并,带有资源别名
- 与现有Vulkan代码兼容
- 可选的从磁盘热重载 着色器
render_graph
.begin_pass("Fancy new algorithm for shading a moving character who is actively on fire")
.bind_pipeline(&gfx_pipeline)
.read_descriptor(0, some_image)
.read_descriptor(1, another_image)
.read_descriptor(3, some_buf)
.clear_color(0, swapchain_image)
.store_color(0, swapchain_image)
.record_subpass(move |subpass| {
subpass.push_constants(some_u8_slice);
subpass.draw(6, 1, 0, 0);
});
调试日志
此crate使用 log
进行低开销日志记录。
要启用日志记录,请将环境变量RUST_LOG
设置为trace
、debug
、info
、warn
或error
,并初始化您选择的日志提供程序。示例使用pretty_env_logger
。
您还可以过滤消息,例如
RUST_LOG=screen_13::driver=trace,screen_13=warn cargo run --example ray_trace
TRACE screen_13::driver::instance > created a Vulkan instance
DEBUG screen_13::driver::physical_device > physical device: NVIDIA GeForce RTX 3090
DEBUG screen_13::driver::physical_device > extension "VK_KHR_16bit_storage" v1
DEBUG screen_13::driver::physical_device > extension "VK_KHR_8bit_storage" v1
DEBUG screen_13::driver::physical_device > extension "VK_KHR_acceleration_structure" v13
...
性能分析
该crate使用profiling
并支持多个分析提供程序。未使用分析时,分析无成本。
要启用分析,请使用带有profile-with-*
功能之一的编译选项进行编译,并初始化您选择的分析提供程序。
示例代码使用puffin
cargo run --features profile-with-puffin --release --example vsm_omni
快速入门
包含了一些可能对您有帮助的示例
hello_world.rs
— 在屏幕上显示窗口。请从这里开始。triangle.rs
— 着色器和索引/顶点缓冲区的完整设置;< 100 LOC。shader-toy/
— 使用原始着色器代码重现了双通道着色器玩具。
注意:所需开发包和库在入门指南中列出。所有新用户都应阅读并理解指南。
历史
小时候,我被赋予了访问装有GW-Basic的计算机的权限;后来又有一台装有QBasic的计算机。我所有的最爱程序都是从
CLS
SCREEN 13
这些命令清除了文本屏幕,并设置了320x200 256色调色板的视频模式。还有其他视频模式可用,但没有哪个像256色那样有“魔力”。
Basic提供的其他命令,如DRAW
,允许您快速构建简单的游戏,因为您不需要掌握编译和链接的全部内容。我认为今天我们应该有类似的功能,所以我开始了这个项目,以使未来的开发者能够快速完成任务。
灵感
Screen 13是从我们社区中其他人分享的学习和经验中构建的。以下是一些我发现有用的存储库:
依赖关系
~10–44MB
~740K SLoC