π Distributed Rendering (Go + Blender)
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.
π§ The "Why"
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.
π οΈ Key Features
- Automated File Watcher: Uses system-level events to detect when you hit
Ctrl + S in Blender.
- Stack-Based Middleware: A custom
stackMiddle.go logic 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.
ποΈ Architecture
- Client (Workstation): Monitors the
.blend file. 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
.blend file, and triggers the Blender CLI (blender -b -a) to render the frames.
π Branch Guide
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.
π Getting Started
Prerequisites
- Go (1.21+)
- Blender (Added to your System PATH)
Installation
git clone https://github.com/0Shree005/DistributedRendering.git
cd DistributedRendering
Running the Server (The Laptop)
go run server.go
Running the Client (The PC)
go run main.go
π License
Distributed under the MIT License. See LICENSE for more information.