【Rust 日报】2020-12-05 rust-gpu 发布 v0.2

2020-12-18 16:20:43 浏览数 (1)

rust-gpu 发布 v0.2

目前可以编译并运行非常简单的着色器,而且核心库的很大一部分也可以编译。但是,很多功能还没有实现:例如,还不支持循环和开关!这意味着,尽管该项目在技术上可用,但远未达到可以投入生产使用。

代码语言:javascript复制
#[spirv(entry = "fragment")]
pub fn main_fs(input: Input<Vec4>, mut output: Output<Vec4>) {
    let dir: Vec3 = input.load().truncate();

    let cs_pos = Vec4(dir.0, -dir.1, 1.0, 1.0);
    let ws_pos = {
        let p = clip_to_world.mul_vec4(cs_pos);
        p.truncate() / p.3
    };
    let dir = (ws_pos - eye_pos).normalize();
    
    // evaluate Preetham sky model
    let color = sky(dir, sun_pos);

    output.store(color.extend(0.0))
}

v0.2的 Github Release 链接:https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.2

rust-analyzer 测量 Rust 的内存使用情况

这篇文章记录了在 rust-analyzer 中用于测量内存消耗的一些有趣技巧。通常,有两种广泛的方法可以分析程序的内存使用情况。第一种方法是基于堆的解析(heap parsing),第二种方法是基于对分配和释放进程的调用检测。详细可以参见原文。

文章链接,https://rust-analyzer.github.io/blog/2020/12/04/measuring-memory-usage-in-rust.html

RAUI,将 UI 视为另一种数据

RAUI,受到 React 声明式 UI 组成和 UE4 Slate 小部件组件系统的极大启发。RAUI 体系结构的主要思想是将 UI 视为另一种数据,你可以将其转换为目标呈现引擎选择的目标可呈现数据格式。

Application 的示例:

代码语言:javascript复制
let mut application = Application::new();
let tree = widget! {
    (app {
        title = (title_bar: {"Hello".to_owned()})
        content = (vertical_box [
            (#{"hi"} button: {"Say hi!".to_owned()})
            (#{"exit"} button: {"Close".to_owned()})
        ])
    })
};
let mut renderer = HtmlRenderer::default();
application.apply(tree);
if let Ok(output) = application.render(&mut renderer) {
    println!("{}", output);
}

Github 链接,https://github.com/PsichiX/raui

200 行 Rust 代码解释 Futures

本书旨在通过示例驱动的方法来解释 Rust 中的 Futures,探索为什么它们被设计成这样,以及它们是如何工作的。还介绍了一些在编程中处理并发时的替代方案。

英文原版链接,https://cfsamson.github.io/books-futures-explained/introduction.html

中文版本链接,https://stevenbai.top/rust/futures_explained_in_200_lines_of_rust/


From 日报小组 洋芋

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区

0 人点赞