A custom, high-performance remote rendering pipeline built in Golang. This project allows a "Client" machine (e.g., a workstation) to automatically offload Blender rendering tasks to a "Server" machine (e.g., a high-spec laptop) the moment a file is saved.
I prefer working on my PC, but my laptop has the RTX 3050 and Ryzen 7 5800H. Instead of manually moving files via USB or cloud storage every time I want to see a render, I built this to bridge the gap.
It turns any networked machine into a dedicated render node.
- Automated File Watcher: Uses system-level events to detect when you hit
Ctrl + Sin Blender. - Stack-Based Middleware: A custom
stackMiddle.gologic that "de-bounces" noisy file-system events. It ensures the transfer only triggers once the file is fully written to disk. - TCP/IP Networking: Direct socket communication for low-latency file transfer and command signaling.
- Concurrent Design: Utilizes Go’s goroutines and channels to handle multiple events without blocking the main execution thread.
- Client (Workstation): Monitors the
.blendfile. When a save is detected, it gates the event through a stack-based validator and streams the file over TCP. - Middleware (
stackMiddle.go): Acts as a locking mechanism to prevent multiple redundant transfers during a single save operation. - Server (Render Node): Listens for incoming data, reconstructs the
.blendfile, and triggers the Blender CLI (blender -b -a) to render the frames.
main: The core TCP server/client implementation. Basic string-based communication to establish the handshake.fileChange: The "engine room." Contains the file monitoring logic, the stack-based event gate, and the file-handling structures.
git clone https://github.com/0Shree005/DistributedRendering.git
cd DistributedRendering
go run server.go
go run main.go
Distributed under the MIT License. See LICENSE for more information.