Quando o RfM processa uma cena ele começa transformando as imagens que vão ser usadas como texturas em arquivos “.tex” e convertendo os shaders da cena para arquivos “.slo”. Estes arquivos são usados logo após quando o processo de render começa.
Mas existe um problema que passa desapercebido à maioria dos usuários: o acesso concorrente de diversas máquinas (ou processos) a estes arquivos. Por exemplo, quando mandamos uma cena para ser processada numa render farm, a primeira máquina começa o processo de conversão de texturas e shaders, terminado este processo, inicia-se o render. Uma outra máquina começa um pouco depois e inicia o seu processo também com a conversão dos arquivos. Digamos que durante esta conversão de arquivos da segunda máquina, a primeira precisa ler uma das texturas que está sendo convertida naquele instante. O que acontece? Um erro de leitura de textura que acaba acarretando um erro na execução do shader e a superfície é renderizada incorretamente.
A primeira saída para este problema é guardarmos estes arquivos temporários no disco local de cada máquina pertencente a render farm. Desta maneira, cada máquina teria os seus arquivos e não haveria um acesso concorrente. Mas o que fazer se lançarmos dois ou mais processos de render em uma única máquina? Teremos estes processos novamente acessando os mesmos arquivos quase ao mesmo tempo e o problema poderia vir a acontecer novamente.
Para resolver este problema temos que nos certificar que cada processo de render terá um diretório exclusivo para guardar os seus dados. Fazemos isso abrindo o Render Globals na Aba Advanced, na Divisão Output Directories e ajustando os atributos para:
Texture Cache: renderman/${SCENE}/$env(COMPUTERNAME)/${JOBID}/textures
Shaders: renderman/${SCENE}/$env(COMPUTERNAME)/${JOBID}/shaders
Render Data: renderman/${SCENE}/$env(COMPUTERNAME)/${JOBID}/data
Temos então que estes dados serão guardados em uma árvore de diretórios dentro do projeto em renderman/nome da cena/nome do computador/número do processo de render. Como não podem existir duas máquinas com o mesmo nome na rede e não temos dois processos com a mesma identificação em cada máquina todos os processos terão um endereço exclusivo para guardar seus dados.