rust-gpu 釋出 v0.2
目前可以編譯并運作非常簡單的着色器,而且核心庫的很大一部分也可以編譯。但是,很多功能還沒有實作:例如,還不支援循環和開關!這意味着,盡管該項目在技術上可用,但遠未達到可以投入生産使用。
#[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 的示例:
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語言中文社群