Разпределено рендериране

Направете рендерирането на един кадър разпределено между 2 (или повече машини).

Базов вариант на задачата (25т): сцената, която ще се ренди, се намира и на двете машини, на едно и също място. Рейтрейсъра се пуска с различни аргументи на двете машини (например: "retrace.exe -slave" на едната, и "hexray -drNodes=192.168.1.5" на другата). Комуникацията между машините да е TCP.
Кадърът се разделя на парчета (както си е досега) и командващата машина определя кои парчета се рендят при нея, кои - при другата. Прехвърлянето на картинните данни също се осъществява по същия канал. След края на ренденето, на командващата машина трябва да си се появи целия кадър.
Разделянето трябва да е динамично, т.е. да не се предполага, че машините са еквивалентни като мощност. Т.е., ако Core 2 Quad процесор пусне рендер, като си помага с Core 2 Duo отсреща, трябва ренденето да приключи по-бързо, отколкото ако се пусне само на Core 2 Quad-а.
Бонус (10т.): да се поддържа повече от една помагаща машина. Така, командващата ще се пуска, примерно "hexray -drNodes=192.168.1.5,192.168.1.30".
Бонус (10т.): да може сцената да се прехвърля по мрежата. Т.е. при осъществяване на връзка със slave, командващата машина предава сцената и всичките текстури/геометрии (тук трябват промени по scene.cpp за да направите списък от тях), и чак след като се прехвърлят, трябва slave машината да тръгне да парсва сценовия файл.

Ако напишете и двата бонуса, ще имате 40т.
Задачата може да се реши от повече от 1 студент, при подходящо разделяне на задачите.