You are on page 1of 24

INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA

CURSO DE ENGENHARIA DA COMPUTAÇÃO

MIKI ITAI

O ESTUDO DE POVRAY UTILIZANDO CLUSTER BEOWULF

BELÉM
2005
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA
CURSO DE ENGENHARIA DA COMPUTAÇÃO

MIKI ITAI

O ESTUDO DE POVRAY UTILIZANDO CLUSTER BEOWULF

Monografia de conclusão de Curso de


Graduação em Engenharia da
Computação apresentado ao Instituto
de Estudos Superiores da Amazônia,
como requisito parcial para obtenção
do grau de Engenheira da
Computação.

Orientado: Prof. Dr. José Felipe de


Almeida.

BELÉM
2005
Este trabalho é dedicado aos meus amigos e familiares.
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA
CURSO DE ENGENHARIA DA COMPUTAÇÃO

MIKI ITAI

O ESTUDO DE POVRAY UTILIZANDO CLUSTER BEOWULF

Esta monografia foi julgada adequada para obtenção do título de Engenheira da


Computação, e aprovada na sua forma final pelo Instituto de Estudos Superiores da
Amazônia.

Data: 13/12/2005
Conceito: APROVADO

_______________________________________
Prof. Dr. José Felipe de Almeida.
ORIENTADOR

_______________________________________
Prof. Ms. Alex Sandre Guedes Alves
MEMBRO

_______________________________________
Prof. Elionai Gomes de Almeida Sobrinho
SUPLENTE

BELÉM
2005
LISTA DE ILUSTRAÇÕES

Figura 1 – Arquitetura do cluster Beowulf montado no laboratório de Automação e Controle


no IESAM, seguindo o modelo de construção de Radajewski (1999)......................................12
Fonte: Tannembaum (2001)......................................................................................................12
Figura 2 – Foto do cluster IESAM MASTER...........................................................................12
Fonte Autoria própria................................................................................................................12
Quadro 1 – Componentes de hardware utilizados para o servidor...........................................13
Fonte: Autoria própria...............................................................................................................13
Quadros 2 – Componentes de hardwares utilizados para os nós do cluster..............................13
Fonte: Autoria própria...............................................................................................................13
Quadro 3 – Componente de hardware para implementação da Rede.......................................13
Fonte: Autoria própria...............................................................................................................13
Figura 3 – Imagem obtida por processamento paralelo no cluster IESAM MASTER.............14
Fonte Autoria própria................................................................................................................14
Figura 4 – Gráfico de amostragem do processamento serial no cluster IESAM MASTER.....16
Fonte Autoria própria................................................................................................................16
Figura 5 – Gráfico que mostra em porcentagem a divisão de tarefas no..................................16
Processamento paralelo no cluster IESAM MASTER............................................................16
Fonte Autoria própria................................................................................................................16
SUMÁRIO

RESUMO....................................................................................................................................7
ABSTRACT................................................................................................................................8
CAPÍTULO 1 – INTRODUÇÃO...............................................................................................9
1.1 JUSTIFICATIVA..............................................................................................................9
1.2 OBJETIVO GERAL.........................................................................................................9
1.3 METODOLOGIA.............................................................................................................9
CAPÍTULO 2 – POVRAY.......................................................................................................10
2.1 CONCEITO DE POVRAY.............................................................................................10
2.2 TÉCNICA UTILIZADA PARA RENDERIZAR IMAGENS........................................10
2.3 CONCEITOS DE IMAGEM VETORIAL.....................................................................10
CAPÍTULO 3. – CLUSTER.....................................................................................................11
3.1 CONCEITOS GERAIS...................................................................................................11
3.2 MONTAGEM FÍSICA E FUNCIONAMENTO DO CLUSTER BEOWULF:.............11
CAPÍTULO 4. – CLUSTER.....................................................................................................13
4.1 RESULTADOS EXPERIMENTAIS..............................................................................13
4.2 AVALIAÇÃO DOS RESULTADOS DOS TESTES DE DESEMPENHO .................15
4.2.1 Processamento Serial...............................................................................................16
4.2.2 Processamento Paralelo............................................................................................16
CONCLUSÃO..........................................................................................................................17
REFERÊNCIAS........................................................................................................................18
ANEXOS..................................................................................................................................19
RESUMO

Esta monografia descreve os experimentos feitos em um cluster composto por seis


máquinas. O trabalho tem por objetivo um estudo sobre as aplicações do programa Povray
na arquitetura Beowulf, utilizando simulações de imagens geradas por processamento
paralelo. È feito uma descrição sobre o programa Povray e as técnicas que foram utilizadas
para renderização de imagens. É feita, ainda, uma descrição sobre este tipo de arquitetura
de cluster e seu funcionamento. A parte prática foi feita por etapas, onde o primeiro passo
foi processar o código em uma máquina e medir seu tempo de processamento. O segundo
passo foi processar o código no cluster completo com todas as máquinas. Por fim, é
apresentada a comparação entre o processamento serial e em paralelo.

Palavras-Chave: Povray, Arquitetura BEOWULF, Cluster e Processamento paralelo.


ABSTRACT

This monograph describes the experiments made in cluster composed for six
machines. The work has for objective a study on the applications of the Povray program in
the Beowulf architecture, using simulation of images generated for parallel processing. Thus,
a description on the Povray program and the techniques that had been used to
reenderinzing images is made. So, a description on this type of architecture of cluster and its
functioning is presented. The practical part was made by stages, where the first step was to
process the code in a machine and to measure its time of processing. The second step was
to process the code in complete machines cluster. Finally, a comparison between serial and
the parallel processing is presented.

Keywords: POVRAY, Architecture BEOWULF, to cluster and parallel processing


9

CAPÍTULO 1 – INTRODUÇÃO

1.1 JUSTIFICATIVA
O processamento digital de imagens tem vários comprometimentos com tempo e
memória computacional. Dependendo da técnica utilizada, esse processo pode se tornar
inviável, quando não se dispõe de recursos adequados. Um exemplo disso é a técnica
Raytracing, a qual trata de imagens vetoriais baseado na descrição geométrica de objetos.
Entretanto, essa técnica é muito eficaz para a seleção e composição de imagens. Devido a
isso, uma alternativa para solucionar esse problema é a utilização de um cluster de
computadores.

1.2 OBJETIVO GERAL.


Apresentar um estudo sobre as aplicações do programa POVRAY na arquitetura
BEOWULF. Esse programa utiliza a técnica raytracing para a geração de imagens. É
objetivo ainda desse trabalho apresentar as características do processamento paralelo e as
configurações da arquitetura Beowulf.

1.3 METODOLOGIA.
O trabalho será desenvolvido através do programa POVRAY e seu funcionamento
no cluster BEOWULF. Será feito uma avaliação do tempo de processamento através de
testes que irão comprovar seu bom desempenho. Sendo a parte prática feita por etapas,
onde o primeiro passo foi processar o código em uma máquina, processamento serial, e
medir seu tempo de processamento. O segundo passo foi processar o código no cluster.
Por fim é feita a comparação entre o processamento serial e paralelo.
10

CAPÍTULO 2 – POVRAY

2.1 CONCEITO DE POVRAY


O Povray (Persistence of Vision Ray Tracer) conforme Pitanga (2004) é um
programa de uso livre (freeware), embora seja “copyrighted”. Esse programa permite o
processamento de imagens a partir da especificação de formas, texturas, cores e iluminação
com um realismo fotográfico. Para isto, utiliza a técnica raytracing. Várias imagens que
podem servir como exemplos de técnicas acompanham o programa podendo ainda ser
importadas. De maneira mais simplificada é um programa de renderização a partir de um
código fonte capaz de criar imagens vetoriais. Esse modelo matemático da cena leva em
conta a manipulação do usuário para obtenção de imagens em três dimensões.

2.2 TÉCNICA UTILIZADA PARA RENDERIZAR IMAGENS


O raytracing é um algoritmo para a síntese de imagens por computador. Sua
característica principal é a alta qualidade das imagens. Isto proporciona incorporação de
sombras, reflexões e transparências entre outros efeitos. Por outro lado, a grande demanda
em termos de processamento. O raytracing parametrizado é um algoritmo baseado na
técnica raytracing, que permite a obtenção de imagens com a mesma qualidade a um custo
computacional dezenas de vezes menores, porém com restrições. Estas restrições são: a
necessidade de geração de um arquivo de dados inicial, cujo tempo de processamento é
pouco maior que a técnica convencional do raytracing e a não possibilidade de alteração de
qualquer parâmetro geométrico da cena. Por outro lado, a geração de versões da mesma
cena com mudanças nos parâmetros ópticos (cores, intensidades de luz, texturas, reflexões,
transparências, etc.) é extremamente rápida. O arquivo de entrada tem a extensão .POV e é
vetorial, onde possui descrições matemáticas de objetos ao invés de matrizes de cores.

2.3 CONCEITOS DE IMAGEM VETORIAL


Uma imagem vetorial na computação gráfica é um tipo de imagem gerada a partir
da descrição geométrica de formas. Em contraste com as chamadas imagens de mapa de
bits, que são geradas a partir de pontos minúsculos. Uma imagem vetorial normalmente é
composta por elipses, curvas, polígonos, texto, entre outros elementos. Ou seja, utilizam
vetores matemáticos para sua descrição. Em um trecho de desenho sólido, de uma cor
apenas, um programa vetorial apenas repete o padrão, não tendo que armazenar dados
para cada pixel. Uma imagem vetorial simples é um arquivo pequeno, que pode ser
facilmente desenhado em vários tamanhos sem perder a sua qualidade. As extensões de
gráficos vetoriais mais conhecidas são WMF (Windows Metafile), CDR (Corel Draw), DWG,
DXF (ambos do AutoCAD) e AI (Adobe Illustrator).
11

CAPÍTULO 3. – CLUSTER

3.1 CONCEITOS GERAIS


Cluster conforme Tannenbaum (2001) é o nome que se dá a um sistema montado
com mais de um computador. O objetivo de um cluster é fazer com que todo o
processamento da aplicação seja distribuído a rede de computadores, sendo o mesmo feito
de maneira que se assemelhe a um único computador. Dessa maneira, é possível realizar
processamentos que apenas computadores de alto desempenho seriam capazes de fazer.
Cada computador de um cluster deve estar conectado entre si formando uma rede.
Sendo que nesta rede se possa acrescentar ou retirar um nó, no caso de danos por
exemplo, mais sem que isso interfira no funcionamento do cluster. É importante lembrar que
o sistema operacional utilizado nos computadores deve ser de um mesmo tipo, ou seja, em
um cluster não se pode usar uma máquina ou nó com Linux e outras com Windows. Isso
ocorre devido à particularidade de cada sistema operacional que poderia impedir o bom
funcionamento do cluster. Além disso, há uma necessidade de usar um software que
possibilite a montagem e o gerenciamento. Esse gerenciador de nós se responsabilizará
pela distribuição das tarefas de processamento e na identificação de erros de modo que ele
providencie os reparos sem que as atividades do cluster sejam interrompidas.
Deve-se considerar ainda, que paralelizar algoritmos é um ramo bastante
inexplorado e de importância vital para a indústria de informática nos próximos anos.
Embora poucas tarefas possam ser paralelizadas com facilidade, um cluster de
computadores é útil para uma enorme quantidade de problemas científicos.

3.2 MONTAGEM FÍSICA E FUNCIONAMENTO DO CLUSTER BEOWULF:


O cluster utilizado neste trabalho foi montado no laboratório de Automação e
Controle no IESAM (Instituto de Estudos Superiores da Amazônia). O modelo de arquitetura
física do cluster Beowulf, denominado IESAM Master, foi baseado no modelo de Radajewski
(1999). O modelo do Cluster do IESAM é composto de um computador controlador (mestre)
e seis nós, escravos, onde todos possuem a mesma configuração de máquina e são
interconectados em rede, através de um switch na velocidade de 100 Mbits/seg. A Figura 1
ilustra o tipo de arquitetura de clusters e a Figura 2 mostra o IESAM Master.
Quanto ao seu funcionamento, tem-se que: a função do controlador é repartir uma
tarefa complexa em partes proporcionais e relativas ao número de nós presentes. Isto é feito
para que se possam distribuir essas partes (processos filhos) para cada nó escravo
correspondente. Desse modo, esses nós podem processar sua parte de maneira
sincronizada e simultânea.
Em seguida, os resultados do processamento, do todos os nós, são entregues para
o computador mestre o qual reunirá esses dados (resultados), transformando-os em
12

informações que serão exibidas para o usuário de forma transparente (dando a impressão
do usuário está operando em um único computador).

e sc ra v o 1 e scra v o 2 e sc ra v o 3

c o n tro la d o r
Switch 3com Gigabit
5 Officeconnect

e sc ra v o 4 esc ra v o 5 e sc ra v o 6

Figura 1 – Arquitetura do cluster Beowulf montado no laboratório de Automação e Controle no IESAM,


seguindo o modelo de construção de Radajewski (1999).
Fonte: Tannembaum (2001)

Figura 2 – Foto do cluster IESAM MASTER.


Fonte Autoria própria
13

CAPÍTULO 4. – CLUSTER

4.1 RESULTADOS EXPERIMENTAIS


O cluster utilizado é composto por elementos descritos abaixo.

Processador Intel Celeron 1.8 GHz


Memória Ram 96 MB *
Capacidade de Disco Rígido 40 GB
Placa de Vídeo (on board) ProSavage 32 MB
Placa de Rede (on board) Fast Ethernet 10/100 MB
Cd-rom 56X
Monitor LG 14” – StudioWorks
Teclado ABNT2
Mouse PS/2
Quantidade 1 unidade
* 128 MB (memória Ram) – 32 MB (memória de Vídeo) = 96 MB (Memória Restante do Sistema)
Quadro 1 – Componentes de hardware utilizados para o servidor.
Fonte: Autoria própria

Processador Intel Celeron 1.8 Ghz


Memória Ram 96 MB *
Capacidade de Disco Rígido 40 GB
Placa de Vídeo (on board) ProSavage 32 MB
Placa de Rede (on board) Fast Ethernet 10/100 MB
Quantidade 6 unidades
Quadros 2 – Componentes de hardwares utilizados para os nós do cluster
Fonte: Autoria própria

Switch Switch 3com Gigabit


Quadro 3 – Componente de hardware para implementação da Rede.
Fonte: Autoria própria

A imagem a seguir foi gerada por processamento paralelo (Figura 3), usando-se o
POVRAY. Os passos utilizados para os testes no cluster são mostrados a seguir.
14

Figura 3 – Imagem obtida por processamento paralelo no cluster IESAM MASTER.


Fonte Autoria própria

1ª Passo: O cluster foi configurado de modo que apenas uma máquina efetuasse a
tarefa assim o cluster Beowulf foi posto para processar a renderização da imagem do
código-fonte skyvase.pov, terminado a execução, descreveu-se na tabela (Tabela 1) o
intervalo de tempo que ele demorou para processar essa tarefa.
2ª Passo: Foi adicionado o restante das máquinas que fazem parte do cluster do
IESAM, totalizando seis computadores, dessa maneira foi posto o cluster para processar a
mesma função, e o resultado do intervalo de tempo que o mesmo utilizou se encontra na
tabela de resultados (Tabela 1).
3ª Passo: Comparar o tempo em que foi executado o primeiro procedimento com o
tempo do segundo procedimento. E constatar que suas respostas.
4ª Passo: Justificar o porque do tempo de execução do cluster ter sido menor que o
tempo de execução do computador convencional.
15

Tabela 1 – Resultados dos intervalos de tempo, para avaliação da diferença da velocidade de


processamento do cluster Beowulf quando submetido a renderização de uma imagem vetorial com
resolução de 640X480.

Nº de Computadores Tempo de Renderização


1 computador 32 segundos
6 computadores 10 segundos

4.2 AVALIAÇÃO DOS RESULTADOS DOS TESTES DE DESEMPENHO


Conforme os dados obtidos na Tabela 1, e observando o primeiro passo
comparando-o com o segundo passo, se tornou perceptível que a configuração do cluster no
segundo passo propiciou um tempo de renderização bem menor do que em relação ao do
primeiro, ou seja, o motivo está na maneira de processamento em que esses passos foram
submetidos, isto é, no primeiro o cluster foi configurado para processar uma tarefa somente
com um computador, então não houve processamento de forma paralela, pois como não
tinha mais outro computador para integrar no sistema (totalizando no mínimo dois
microcomputadores), logo a tarefa não pode ser dividida, sendo assim, o primeiro passo
caracterizou-se como um processamento de forma serial, já que só existe paralelismo se
houver divisão de tarefas.
Escalabilidade é a propriedade de um sistema qualquer que lhe confere a
capacidade de aumentar seu desempenho sob carga quando recursos, tipicamente
hardware, no caso de computadores são acrescentados a um sistema cujo desempenho
aumenta com o acréscimo de hardware proporcional a capacidade acrescida. Podendo ser
observado pelos gráficos a seguir que apresentam a divisão a uma determinada
porcentagem para cada máquina ou nó do cluster em ambos os processamentos no serial e
no paralelo.
E importante lembrar também que as imagens obtidas nos experimentos são de
excelente qualidade, em ambos os processos.
16

4.2.1 Processamento Serial

Porcentagem de escalabilidade

100%

1 Nodo

Figura 4 – Gráfico de amostragem do processamento serial no cluster IESAM MASTER.


Fonte Autoria própria

4.2.2 Processamento Paralelo

Porcentagem de uso

5%
20%
24%

20%

15%
16%

Slave 1 Slave 2 Slave 3 Slave 4 Slave 5 Slave 6

Figura 5 – Gráfico que mostra em porcentagem a divisão de tarefas no


Processamento paralelo no cluster IESAM MASTER.
Fonte Autoria própria
17

CONCLUSÃO

Este trabalho tratou da obtenção de imagem utilizando a técnica raytracing, com o


programa POVRAY paralelizado. A parametrização desta técnica foi feita por
processamento paralelo devido às restrições de tratamento computacional de arquivos de
dados iniciais, típico da técnica raytracing. Isto permite a obtenção de imagens com a
mesma qualidade a um custo computacional dezenas de vezes menores. Por fim, foram
mostradas as comparações entre o processamento serial e paralelo, para gerar imagem por
esta técnica.
18

REFERÊNCIAS

• STERLING, T. et. al. Beowulf: A parallel Workstation for Scientitific


Computation.. Disponível em
<http://beowulf.es.embnet.org/papers/ICPP95/icpp95.html>. Acesso em 02 de
Jun. 2005

• PITANGA, M. Construindo Supercomputador com Linux. 2. ed. Rio de


Janeiro: Brasport, 2004.

• RADAJEWSKI, J. Installation and Administration HOWTO. 1999. Disponível


em: <www.ic.uff.br/~vefr/research/clcomp/Beowulf-Installation-and-
Administration-HOWTO.html> Acesso em 23 ago. 2005.

• STALLINGS, W. et al. Arquitetura e Organização de Computadores: projeto


para o desempenho. 5. ed. São Paulo: Prentice Hall, 2002.

• TANNENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: LTC,


2001.
19

ANEXOS

Gráfico Comparativo de Intervalo de Tempo

80
Tempo de Processamento
70

60

50
Serial
40
Paralelo

30

20

10

0
1

Tipo de Processamento

RESULTADOS DO EXPERIMENTO.

#### Processamento em paralelo do povray realizado pelo cluster Beowulf – 1 computador.

PE Distribution Statistics:

Slave PE [ done ] Slave PE [ done ]

1 [100.00%]

2 POV-Ray statistics for finished frames:

skyvase.pov Statistics, Resolution 640 x 480

----------------------------------------------------------------------------

Pixels: 309760 Samples: 402032 Smpls/Pxl: 1.30

Rays: 1670743 Saved: 10904 Max Level: 0/5

----------------------------------------------------------------------------
20

Ray->Shape Intersection Tests Succeeded Percentage

----------------------------------------------------------------------------

CSG Intersection 5387118 495838 9.20

Plane 32322708 17309700 53.55

Quadric 5387118 2301608 42.72

Sphere 5387118 793555 14.73

----------------------------------------------------------------------------

Calls to Noise: 1739695 Calls to DNoise: 3230690

----------------------------------------------------------------------------

Shadow Ray Tests: 6202320 Succeeded: 143204

Reflected Rays: 1268711

----------------------------------------------------------------------------

Smallest Alloc: 32 bytes Largest: 1024008

Peak memory used: 4149707 bytes

----------------------------------------------------------------------------

Time For Trace: 0 hours 0 minutes 32.0 seconds (32 seconds)

Total Time: 0 hours 0 minutes 32.0 seconds (32 seconds)

#### Processamento em paralelo do povray realizado pelo cluster Beowulf – 6


computadores no total

PE Distribution Statistics:

Slave PE [ done ] Slave PE [ done ]


21

1 [ 5.33%]

2 [24.00%] 3 [20.00%]

4 [14.67%] 5 [20.00%]

6 [16.00%]

POV-Ray statistics for finished frames:

skyvase.pov Statistics (Partial Image Rendered), Resolution 640 x 480

----------------------------------------------------------------------------

Pixels: 33024 Samples: 49080 Smpls/Pxl: 1.49

Rays: 200517 Saved: 1613 Max Level: 0/5

----------------------------------------------------------------------------

Ray->Shape Intersection Tests Succeeded Percentage

----------------------------------------------------------------------------

CSG Intersection 659234 43651 6.62

Plane 3955404 2050341 51.84

Quadric 659234 192834 29.25

Sphere 659234 98622 14.96

------------------------------------------------------------------------------------------

Shadow Ray Tests: 784278 Succeeded: 11951

Reflected Rays: 151437

----------------------------------------------------------------------------

Smallest Alloc: 32 bytes Largest: 1024008


22

Peak memory used: 5174507 bytes

Time For Trace: 0 hours 0 minutes 10.0 seconds (10 seconds)

Total Time: 0 hours 0 minutes 10.0 seconds (10 seconds)

CÓDIGO FONTE USADO NO EXPERIMENTO

Exemplo de uma imagem Persistence oO Vision, o vaso espacial, skyvase.pov.

// Persistence Of Vision raytracer version 3.1 sample file.


// File by Dan Farmer
//
// NOTE: This image has traditionally been used as the standard
// benchmark file. At the time of POV-Ray 1.0, this scene rendered
// in about the same time as the average of all of the standard scene
// files. Be cautious of making changes that will unfairly affect
// benchmarks. Please log all changes to this file below.
// ===============
// Change history
// ===============
// POV-Ray 3.0 changes:
// DMF 1995 - Commented out bounding object.
// DMF 1995 - Added max_trace_level 20 for use with ADC
// (reached level 13 of 20 on a 160x100 -a render)
// DCB 1998 - Changed syntax to 3.1 compatable
// ===============

global_settings { assumed_gamma 2.2 max_trace_level 20 }


#include "shapes.inc"
#include "shapes2.inc"
#include "colors.inc"
#include "textures.inc"
#declare DMF_Hyperboloid = quadric { /* Like Hyperboloid_Y, but more curvy */
<1.0, -1.0, 1.0>,
<0.0, 0.0, 0.0>,
<0.0, 0.0, 0.0>,
23

-0.5
}
camera {
location <0.0, 28.0, -200.0>
direction <0.0, 0.0, 2.0>
up <0.0, 1.0, 0.0>
right <4/3, 0.0, 0.0>
look_at <0.0, -12.0, 0.0>
}
/* Light behind viewer postion (pseudo-ambient light) */
light_source { <100.0, 500.0, -500.0> colour White }
union {
union {
intersection {
plane { y, 0.7 }
object { DMF_Hyperboloid scale <0.75, 1.25, 0.75> }
object { DMF_Hyperboloid scale <0.70, 1.25, 0.70> inverse }
plane { y, -1.0 inverse }
}
sphere { <0, 0, 0>, 1 scale <1.6, 0.75, 1.6 > translate <0, -1.15, 0> }
scale <20, 25, 20>
pigment {
Bright_Blue_Sky
turbulence 0.3
quick_color Blue
scale <8.0, 4.0, 4.0>
rotate 15*z
}
finish {
ambient 0.1
diffuse 0.75
phong 1
phong_size 100
reflection 0.35
}
}
sphere { /* Gold ridge around sphere portion of vase*/
24

<0, 0, 0>, 1
scale <1.6, 0.75, 1.6>
translate -7*y
scale <20.5, 4.0, 20.5>
finish { Metal }
pigment { OldGold }
}
}
/* Stand for the vase */
object { Hexagon
rotate -90.0*z /* Stand it on end (vertical)*/
rotate -45*y /* Turn it to a pleasing angle */
scale <40, 25, 40>
translate -70*y
pigment {
Sapphire_Agate
quick_color Red
scale 10.0
}
finish {
ambient 0.2
diffuse 0.75
reflection 0.85
}
}
union {
plane { z, 50 rotate -45*y }
plane { z, 50 rotate +45*y }
hollow on
pigment { DimGray }
finish {
ambient 0.2
diffuse 0.75
reflection 0.5
}
}

You might also like