Damascus
A node-based procedural modelling and ray marching application written in Rust and WGSL
Install / Use
/learn @obulka/DamascusREADME
damascus
Damascus is a ray marcher/path tracer with a node-based gui, written entirely in Rust and WGSL.
This is very much still a work in progress, and future breaking changes are all but guaranteed.
<img width="2012" height="2075" alt="Screenshot from 2025-08-18 08-58-20" src="https://github.com/user-attachments/assets/334c2f31-72a5-4634-acb5-97ce56b55c24" /> The above image was created with a branch that will be merged to main... eventually... <br /><br /><br />Running the project
Simply clone the repo and run cargo run --release to build and launch the application.
Ubuntu
If you haven't already, install rust:
sudo apt install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install the following required packages:
sudo apt install -y build-essential cmake libglib2.0-dev libghc-gi-atk-dev libgtk-3-dev
Usage
If this is your first time using the application, you can go to file->load in the toolbar and load the scene at assets/basic_scene.dam. Click Set active on the ray marcher node to view the scene. You can middle click and drag to pan over the node graph, and scroll to zoom in and out. Click and drag on the background to box-select nodes, and you can hold down shift to expand the current selection. You can then drag the selected nodes around. The delete key will remove all selected nodes. ctrl+c to copy the selected nodes, and ctrl+v to paste. ctrl+n will clear the scene. If any node prior to the scene node is selected you can pan the camera by left/middle clicking and dragging, and rotate the camera with right click and drag. You can scroll the mouse wheel over the viewer to move the camera in and out.
Now try playing with the various parameters, such as the shape on the primitive node, and light_type on the light node. Hover over the parameter labels to see a tooltip describing the function of the parameter. Then you can also try adding more nodes, such as a new primitive. Right click in the node graph panel to bring up the node selection dialog. Plug the new primitive into the existing one's children input and use the various blend_types to create interesting composite shapes.
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
