Skip to content

Raytracer made from sctratch with basic compatibility for .obj | School Project

License

Notifications You must be signed in to change notification settings

Saverio976/Raytracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a6c5f21 · Nov 10, 2024
May 26, 2023
May 14, 2023
May 11, 2023
May 11, 2023
Nov 10, 2024
May 14, 2023
May 11, 2023
May 10, 2023
May 11, 2023
May 10, 2023
May 16, 2023
May 9, 2023

Repository files navigation

Build and release

RayTracer

Projet réalisé en 2ème année à EPITECH

membres du projet:

Site Doxygen Du Projet UML du Projet

Introduction

L'objectif est de réaliser un Raytracer en C++

image

  • Pyramide 4k:

pyramid

config link

TOC

Installation

git clone https://github.com/Saverio976/Raytracer.git
cd Raytracer
cmake .
make

This will create a binary in the current working directory

Usage

./raytracer --help

                                        ,----,
                                      ,/   .`|
,-.----.                            ,`   .'  :
\    /  \                         ;    ;     /
;   :    \                      .'___,/    ,' __  ,-.                                __  ,-.
|   | .\ :                      |    :     |,' ,'/ /|                              ,' ,'/ /|
.   : |: |   ,--.--.        .--,;    |.';  ;'  | |' | ,--.--.     ,---.     ,---.  '  | |' |
|   |  \ :  /       \     /_ ./|`----'  |  ||  |   ,'/       \   /     \   /     \ |  |   ,'
|   : .  / .--.  .-. | , ' , ' :    '   :  ;'  :  / .--.  .-. | /    / '  /    /  |'  :  /
;   | |  \  \__\/: . ./___/ \: |    |   |  '|  | '   \__\/: . ..    ' /  .    ' / ||  | '
|   | ;\  \ ," .--.; | .  \  ' |    '   :  |;  : |   ," .--.; |'   ; :__ '   ;   /|;  : |
:   ' | \.'/  /  ,.  |  \  ;   :    ;   |.' |  , ;  /  /  ,.  |'   | '.'|'   |  / ||  , ;
:   : :-' ;  :   .'   \  \  \  ;    '---'    ---'  ;  :   .'   \   :    :|   :    | ---'
|   |.'   |  ,     .-./   :  \  \                  |  ,     .-./\   \  /  \   \  /
`---'      `--`---'        \  ' ;                   `--`---'     `----'    `----'
                            `--`
__USAGE__:
	./raytracer --scene-path <scene-conf.yaax> --output-path <file> [--log-level <int>] [--gui] [--font-path <font file>]
	./raytracer --help

__OPTIONS__:
	--scene-path <scene-conf.yaax> path to scene config
	--output-path <file>           path to output file (dont put .ppm or any extension, it is just a base file path)
	--help                         to display the help message
	--log-level <int>              log level can be {-1: no log, 0: fatal, 1: error, 2: warn, 3: info, 4: debug, 5: trace} [3 by default]
	--gui                          to display the images in GUI mode
	--font-path <font file>        path to font file [./Assets/arial.ttf by default]

__IN WINDOW__:
	Z                              : go forward to exit
	Q                              : go left
	S                              : go backward to exit
	D                              : go right
	Space                          : go up
	Left Shift                     : go down
	Left Arrow                     : go previous camera
	Right Arrow                    : go next camera

__CREDITS__:
	Authors: Y A A X
	Repository: https://github.com/Saverio976/Raytracer

Exemples/Documentation

les primitives sont:

les materiaux sont:

les lumières sont:

les cameras sont:

les filtres sont:

Sphere

image

afficher ...
#sphere.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des spheres
    Sphere = (
        # notre sphere est configuré ici
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position de la sphere
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon de la sphere
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une sphere ?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur de la sphere
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Utilisation de la couche de la sphere
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Plan

image

afficher ...
#plan.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des plans
    Plane = (
        # Plan numéro 1
        {
            transform = {
                # Position du plan
                position = {x = 0.0; y = 150.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert d'agrandir un plan infini ?)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au plan
                # cette config va faire un plan parallelle à la caméra
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du plan
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Utilisation de la couche du plan
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        # Plan numéro 2
        {
            transform = {
                # Position du plan
                position = {x = 0.0; y = 10.0; z = -100.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert d'agrandir un plan infini ?)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au plan
                # cette config va faire un plan correspondant au sol
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                # Couleur du plan
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation de la couche du plan
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Plan-Limité

image

afficher ...
#plan-limited.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des plans limité
    LimitedPlane = (
        # Plan numéro 1
        {
            transform = {
                # Position du plan
                position = {x = 0.0; y = 150.0; z = 0.0;};
                # X: agrandis/diminue la taille x
                # Y: agrandis/diminue la taille y
                # Z: mettre a 0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au plan
                # cette config va faire un plan parallelle à la caméra
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            # Taille du plan
            size = {x: 100; y = 200;};
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du plan
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Utilisation de la couche du plan
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        # Plan numéro 2
        {
            transform = {
                # Position du plan
                position = {x = 0.0; y = 10.0; z = -100.0;};
                # X: agrandis/diminue la taille x
                # Y: agrandis/diminue la taille y
                # Z: mettre a 0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au plan
                # cette config va faire un plan correspondant au sol
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            # Taille du plan
            size = {x: 100; y = 100;};
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du plan (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                # Couleur du plan
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation de la couche du plan
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Disque

image

afficher ...
#disk.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des disk
    Disk: (
        # Disque numéro 1
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position du disque
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon du disque
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au disque
                # cette config va faire un disque parallelle à la caméra
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            }
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du disque
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Utilisation de la couche du disque
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            }
        },
        # Disque numéro 2
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position du disque
                position = {x = 15.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon du disque
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # vecteur normalisé perpendiculaire au disque
                # cette config va faire un truc que je sais pas expliqué, c.f. l'exemple ci-dessous
                rotation = {x = 1.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du disque
                color = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation de la couche du disque
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            }
        }
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Cone

image

afficher ...
# cone.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des cones
    Cone: (
        # Cone numéro 1
        {
            # Angle du cone
            angle = 1.0
            transform = {
                # Position du cone
                position = {x = 0.0; y = 200.0; z = 0.0;};
                # X: agrandis/diminus l'angle
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # vecteur qui va vers la direction du cone
                # ce cone regardera le ciel
                rotation = {x = 0.0; y = 0.0; z = 1.57};
            };
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du disque
                color = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation de la couche du disque
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        }
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Cone-Limité

image

afficher ...
# cone-limited.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des cones
    LimitedCone: (
        # Cone numéro 1
        {
            # Angle du cone
            angle = 1.0;
            # Taille du cone
            height = 200.0;
            transform = {
                # Position du cone
                position = {x = 0.0; y = 200.0; z = 0.0;};
                # X: agrandis/diminus l'angle
                # Y: agrandis/diminus la taille
                # Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # vecteur qui va vers la direction du cone
                # ce cone regardera le ciel
                rotation = {x = 0.0; y = 0.0; z = 1.57};
            };
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur du disque
                color = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation de la couche du disque
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur du disque (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        }
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Cylindre

image

afficher ...
# cylinder.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des cylindres
    Cylinder = (
        # Cylindre numero 1
        {
            transform = {
                # Position du cylindre
                position = {x = 100.0; y = 0.0; z = -100.0;};
                # X: agrandis/diminus le rayon du cylindre
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (La roation n'est pas supportée)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            # Rayon du cylindre
            radius = 50.0;
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                # Couleur du cylindre
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation du matériau
                type = "PlainMaterial";
            }
        }
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Cylindre-Limité

image

afficher ...
# cylinder-limited.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des cylindres
    LimitedCylinder = (
        # Cylindre numero 1
        {
            transform = {
                # Position du cylindre
                position = {x = 100.0; y = 0.0; z = -100.0;};
                # X: agrandis/diminus le rayon du cylindre
                # Y: agrandis/diminus la taille du cylindre
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (La roation n'est pas supportée)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            # Rayon du cylindre
            radius = 50.0;
            # Taille du cylindre
            height = 60.0;
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                # Couleur du cylindre
                color = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Utilisation du matériau
                type = "PlainMaterial";
            }
        }
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Torus

image

afficher ...
# torus.yaax

# configuration des cameras
cameras:
{
    # camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # l'echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # la rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # distance de la caméra par rapport à l'écran
            focal = 200.0;
            # nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# les objets de la scene
primitives :
{
    # list of torus
    Torus = (
        {
            minRadius = 50.0;
            maxRadius = 120.0;
            transform = {
                # position du torus
                position = {x = 0.0; y = 30.0; z = 0.0;};
                # x: agrandis/diminus l'angle maxradius
                # y: agrandis/diminus l'angle minradius
                # z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # x/y/z: mettre 0.0 (la rotation n'est pas suportée)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            material = {
                # utilisation du matériau
                type = "PlainMaterial";
                # taux de reflet de la lumière
                shininess = 1.0;
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0;};
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0;};
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0;};
                # couleur du torus
                color = {r = 50.0; g = 255.0; b = 255.0; a = 255.0;};
            };
        }
    );
};

# configuration de la lumière
lights :
{
    # point de lumière (une lampe par example)
    PointLight = (
        # première lampe de type pointlight
        {
            transform = {
                # position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # x: agrandis/diminus le rayon de la lampe
                # y: agrandis/diminus la puissance de la lampe
                # z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # x/y/z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # première lampe de type ambientlight
        {
            transform = {
                # position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # x: agrandis/diminus la puissance de la lampe
                # y/z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # x/y/z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Triangle

image

afficher ...
# triangle.yaax

# configuration des cameras
cameras:
{
    # camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # l'echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # la rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # distance de la caméra par rapport à l'écran
            focal = 200.0;
            # nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxthreads = -1;
            # filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# les objets de la scene
primitives :
{
    # list of triangle
    Triangle = (
        {
            # Premier point du triangle
            pointOne = {x = 0.0; y = 100.0; z = 200.0;};
            # Second point du triangle
            pointTwo = {x = 40.0; y = 100.0; z = 0.0;};
            # Troisième point du triangle
            pointThree = {x = -40.0; y = 100.0; z = 0.0;};
            transform = {
                # X/Y/Z: mettre 0.0
                position = {x = 0.0; y = 0.0; z = 20.0;};
                # X/Y/Z: mettre 0.0
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            material = {
                # Utilisation du matériau
                type = "PlainMaterial";
                # taux de reflet de la lumière
                shininess = 1.0;
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0;};
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0;};
                # utilisé pour modifier le taux de reflet/couleur de la sphere (lumière lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0;};
                # Couleur du triangle
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
            };
        }
    );
};

# configuration de la lumière
lights :
{
    # point de lumière (une lampe par example)
    PointLight = (
        # première lampe de type pointlight
        {
            transform = {
                # position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # x: agrandis/diminus le rayon de la lampe
                # y: agrandis/diminus la puissance de la lampe
                # z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # x/y/z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # première lampe de type ambientlight
        {
            transform = {
                # position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # x: agrandis/diminus la puissance de la lampe
                # y/z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # x/y/z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

Obj

image

* afficher ...
# obj.yaax

# Configuration of the camera
cameras:
{
    Camera: (
        {
            size = {x: 500; y = 500;};
            transform = {
                position = {x = 0.0; y = -30.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            focal = 200.0;
            maxThreads = -1;
            filters = {
                SSAAx4: (
                    {
                        maxThreads = -1;
                    }
                )
            }
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of OBJ
    Obj = (
        {
            filePath = "./tests/obj/monkey.obj";
            transform = {
                position = {x = 0.0; y = 0.0; z = 0.0;};
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                type = "PlainMaterial";
                shininess = 10.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0;};
                diffuse = {x = 1.0; y = 1.0; z = 1.0;};
                specular = {x = 1.0; y = 1.0; z = 1.0;};
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
            };
        }
    );
};

# Light configuration
lights :
{
    PointLight = (
        {
            transform = {
                position = {x = 0.0; y = -10.0; z = 0.0;};
                scale = {x = 500.0; y = 1.0; z = 0.0;};
                rotation = {x = 60.0; y = 20.0; z = -10.0;};
            };
            color = {r = 255.0; g = 126.0; b = 255.0; a = 255.0;};
            power = 2.0;
            radius = 500.0;
        }
    );
    AmbientLight = (
        {
            transform = {
                position = {x = 150.0; y = 0.0; z = 100.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 60.0; y = 20.0; z = -10.0;};
            };
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            power = 1.0;
        }
    );
};

PlainMaterial

image

afficher ...
# plainmaterial.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des spheres
    Sphere = (
        # notre sphere est configuré ici
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position de la sphere
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon de la sphere
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une sphere ?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur de la sphere
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Utilisation de la couche de la sphere
                type = "PlainMaterial";
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

ChessBoardMaterial

image

afficher ...
# chessboardmaterial.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des spheres
    Sphere = (
        # notre sphere est configuré ici
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position de la sphere
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon de la sphere
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une sphere ?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Utilisation de la couche de la sphere
                type = "ChessBoardMaterial";
                # taille des cases
                size = 10.0;
                # Couleur des cases impairs
                impair = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Couleur des cases pairs
                pair = {r = 0.0; g = 0.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

ZebraMaterial

image

afficher ...
# zebramaterial.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des spheres
    Sphere = (
        # notre sphere est configuré ici
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position de la sphere
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon de la sphere
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une sphere ?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Utilisation de la couche de la sphere
                type = "ZebraMaterial";
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Taille d'une bande de rayure du zèbre
                size = 10.0;
                # Couleur impair
                impair = {r = 255.0; g = 255.0; b = 255.0; a = 255.0;};
                # Couleur pair
                pair = {r = 0.0; g = 0.0; b = 0.0; a = 255.0;};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

TransparencyMaterial

image

afficher ...
# transpacparencymaterial.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Les objets de la scene
primitives :
{
    # Liste des spheres
    Sphere = (
        # notre sphere est configuré ici
        {
            # Taille du rayon
            radius = 100.0;
            transform = {
                # Position de la sphere
                position = {x = -150.0; y = 150.0; z = 50.0;};
                # X: agrandis/diminus le rayon de la sphere
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une sphere ?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Utilisation de la couche de la sphere
                type = "TransparencyMaterial";
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Couleur de la sphere
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                # pourcentage de transparance
                # entre 0 et 255
                # 0: totalement transparent
                # 255: totalement opaque
                transparency = 150.0;
            };
        },
    )
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

RefractionMaterial

image

afficher ...
# refractionmaterial.yaax

# Configuration des cameras
cameras:
{
    CameraCluster: (
        {
            screenSize = {x: 500; y = 500;};
            screen = {
                position = {x = 0.0; y = 0.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 90.0; y = 90.0; z = 0.0;};
            };
            maxThreads = 1;
            cluster = 1,
            distanceFromScreen = 200.0;
            filters = {
                SSAAx4: (
                    {
                        maxThreads = -1
                    }
                )
            }
        }
    );
};

# Les objets de la scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                shininess = 1.0;
                color = {r = 222.0; g = 102.0; b = 97.0; a = 25.0;};
                type = "PlainMaterial";
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                shininess = 1.0;
                color = {r = 50.0; g = 50.0; b = 50.0; a = 10.0;};
                type = "PlainMaterial";
                transparency = 50.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        }
    );
    LimitedPlane = (
        {
            transform = {
                position = {x = -30.0; y = 25.0; z = -15.0;};
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 100; y = 150;};
            material = {
                # Taux d'éblouissement de la lumière
                shininess = 1.0;
                # Couleur du materiel
                color = {r = 50.0; g = 50.0; b = 0.0; a = 50.0;};
                # Type de materiel
                type = "RefractionMaterial";
                # Transparence (de 0 à 255)
                # 0 = invisible
                # 255 = opaque
                transparency = 25.0;
                # Refraction [x=0.0, y=0.0, z=0.0] correspond à un plan transparent
                # Vecteur ajouté à la normal de l'object
                refraction = {x = 0.5; y = 0.7; z = -0.2};
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                shininess = 1.0;
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                type = "PlainMaterial";
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                shininess = 1.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights :
{
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
};

MirrorMaterial

image

afficher ...
# mirrormaterial.yaax

# Configuration of the camera
cameras:
{
    CameraCluster: (
        {
            screenSize = {x: 500; y = 500;};
            screen = {
                position = {x = 0.0; y = 0.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 90.0; y = 90.0; z = 0.0;};
            };
            maxThreads = 1;
            cluster = 1,
            distanceFromScreen = 200.0;
            filters = {
                SSAAx4: (
                    {
                        maxThreads = -1
                    }
                )
            }
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                # Type de material
                type = "MirrorMaterial";
                shininess = 1.0;
                color = {r = 255.0; g = 255.0; b = 255.0; a = 50.0;};
                # Transparence
                # 0: c'est un pure mirroir (pas d'ombre dessus)
                # 255: c'est plus trop un mirroir
                transparency = 50.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            radius = 25.0;
            transform = {
                position = {x = 0.0; y = -50.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                shininess = 1.0;
                color = {r = 255.0; g = 255.0; b = 255.0; a = 25.0;};
                type = "MirrorMaterial";
                # Transparence
                # 0: c'est un pure mirroir (pas d'ombre dessus)
                # 255: c'est plus trop un mirroir
                transparency = 50.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                shininess = 1.0;
                color = {r = 50.0; g = 50.0; b = 50.0; a = 50.0;};
                type = "MirrorMaterial";
                # Transparence
                # 0: c'est un pure mirroir (pas d'ombre dessus)
                # 255: c'est plus trop un mirroir
                transparency = 50.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 125.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                shininess = 1.0;
                color = {r = 50.0; g = 50.0; b = 50.0; a = 50.0;};
                type = "MirrorMaterial";
                # Transparence
                # 0: c'est un pure mirroir (pas d'ombre dessus)
                # 255: c'est plus trop un mirroir
                transparency = 50.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                shininess = 1.0;
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                type = "PlainMaterial";
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                shininess = 1.0;
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                specular = {x = 1.0; y = 1.0; z = 1.0};
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                type = "PlainMaterial";
            };
        }
    );
};

# Light configuration
lights :
{
    PointLight = (
        {
            transform = {
                position = {x = 150.0; y = 0.0; z = 100.0;};
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            power = 3.0;
            radius = 500.0;
        },
        {
            transform = {
                position = {x = -150.0; y = 0.0; z = 100.0;};
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            color = {r = 255.0; g = 0.0; b = 0.0; a = 255.0;};
            power = 1.0;
            radius = 500.0;
        }
    );
    AmbientLight = (
        {
            transform = {
                position = {x = 150.0; y = 0.0; z = 100.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            power = 1.0;
        }
    );
};

AmbientLight

image

afficher ...
# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
    # Point de lumière (une lampe par example)
    # ####### Atention
    # ###### Pour une question de test, la point light à un rayon de 1 (donc elle éclaire rien)
    # ###### La scene devient noir si il n'y a qu'une source de lumière
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 1.0;
        }
    );
}

PointLight

image

afficher ...
# ambientlight.yaax

# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    ###### Atention
    # ### Pour le test, la puissance est à 0
    # ### Il y est obligé d'avoir 2 lumière sinon la scene devient noire
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 0.0;
        }
    );
    # Point de lumière (une lampe par example)
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
}

SpotLight

image

afficher ...
# Configuration des cameras
cameras:
{
    # Camera par defaut (la plus simple d'utilisation)
    Camera: (
        {
            # Taille de l'image (de l'écran) (en pixels)
            size = {x: 500; y = 500;};
            transform = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # L'Echelle n'est pas suportée
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # La rotation n'est pas suportée
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance de la caméra par rapport à l'écran
            focal = 200.0;
            # Nombre de pixel d'éxécution en parallelle (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {};
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    SpotLight = (
        {
            transform = {
                # Position de la lampe
                position = {x = -50.0; y = 0.0; z = 0.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: agrandis/diminus l'angle de la lampe
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                # vecteur normalisé de direction de la lampe
                rotation = {x = 0.0; y = 1.0; z = -0.5;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 5.0;
            # Rayon du chants d'actions de la lumière
            radius = 500.0;
            # Angle de la lampe (comme le cone)
            angle = 50.0;
        }
    );
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
}

Camera

Regarder la documentation pour les primitives, elle explique déjà bien le principe

CameraCluster

cluster1 cluster2 cluster5

afficher ...
# camera-cluster1.yaax

# Configuration of the camera
cameras:
{
    CameraCluster: (
        {
            # Taille de l'écran
            screenSize = {x: 500; y = 500;};
            screen = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance entre la caméra est l'écran
            distanceFromScreen = 200.0;
            # le rapport entre 1 rayon -> pixel
            # dans le cas présent, 1 rayon = 1 pixel
            cluster = 1;
            # Nombre maximum de threads utilisé (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = ()
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
    SpotLight = (
        {
            transform = {
                # Position de la lampe
                position = {x = -50.0; y = 0.0; z = 0.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: agrandis/diminus l'angle de la lampe
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                # vecteur normalisé de direction de la lampe
                rotation = {x = 0.0; y = 1.0; z = -0.5;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 5.0;
            # Rayon du chants d'actions de la lumière
            radius = 500.0;
            # Angle de la lampe (comme le cone)
            angle = 50.0;
        }
    );
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
}
# camera-cluster2.yaax

# Configuration of the camera
cameras:
{
    CameraCluster: (
        {
            # Taille de l'écran
            screenSize = {x: 500; y = 500;};
            screen = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance entre la caméra est l'écran
            distanceFromScreen = 200.0;
            # le rapport entre 1 rayon -> pixel
            # dans le cas présent, 1 rayon = 4 pixels
            cluster = 2;
            # Nombre maximum de threads utilisé (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = ()
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
    SpotLight = (
        {
            transform = {
                # Position de la lampe
                position = {x = -50.0; y = 0.0; z = 0.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: agrandis/diminus l'angle de la lampe
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                # vecteur normalisé de direction de la lampe
                rotation = {x = 0.0; y = 1.0; z = -0.5;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 5.0;
            # Rayon du chants d'actions de la lumière
            radius = 500.0;
            # Angle de la lampe (comme le cone)
            angle = 50.0;
        }
    );
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
}
# camera-cluster5.yaax

# Configuration of the camera
cameras:
{
    CameraCluster: (
        {
            # Taille de l'écran
            screenSize = {x: 500; y = 500;};
            screen = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance entre la caméra est l'écran
            distanceFromScreen = 200.0;
            # le rapport entre 1 rayon -> pixel
            # dans le cas présent, 1 rayon = 25 pixels
            cluster = 5;
            # Nombre maximum de threads utilisé (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = ()
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
    SpotLight = (
        {
            transform = {
                # Position de la lampe
                position = {x = -50.0; y = 0.0; z = 0.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: agrandis/diminus l'angle de la lampe
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                # vecteur normalisé de direction de la lampe
                rotation = {x = 0.0; y = 1.0; z = -0.5;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 5.0;
            # Rayon du chants d'actions de la lumière
            radius = 500.0;
            # Angle de la lampe (comme le cone)
            angle = 50.0;
        }
    );
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
}

SSAAx4

image

SSAAx4
# Configuration of the camera
cameras:
{
    CameraCluster: (
        {
            # Taille de l'écran
            screenSize = {x: 500; y = 500;};
            screen = {
                # Position de l'écran
                position = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                # X/Y/Z: Mettre 0.0 (pas suporté)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Distance entre la caméra est l'écran
            distanceFromScreen = 200.0;
            # le rapport entre 1 rayon -> pixel
            # dans le cas présent, 1 rayon = 1 pixel
            cluster = 1;
            # Nombre maximum de threads utilisé (-1 laisse la caméra sélectionner le maximum possible)
            maxThreads = -1;
            # Filtres (étape après la génération de l'image)
            filters = {
                # Filtre de type SSAAx4 (anti aliasing basique)
                SSAAx4: (
                    {
                        maxThreads = -1;
                    }
                )
            }
        }
    );
};

# Primitives in the scene
primitives :
{
    # List of spheres
    Sphere = (
        {
            radius = 100.0;
            transform = {
                position = {x = -150.0; y = 150.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            radius = 50.0;
            transform = {
                position = {x = 15.0; y = 100.0; z = 50.0;};
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            }
            material = {
                color = {r = 68.0; g = 171.0; b = 128.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
    Plane = (
        {
            transform = {
                position = {x = 0.0; y = 150.0; z = 0.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 1.0; z = 0.0;};
            };
            size = {x = 50.0; y = 50.0; z = 0.0;};
            material = {
                color = {r = 255.0; g = 255.0; b = 0.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        },
        {
            transform = {
                position = {x = 0.0; y = 10.0; z = -100.0;};
                scale = {x = 0.0; y = 0.0; z = 0.0;};
                rotation = {x = 0.0; y = 0.0; z = 1.0;};
            };
            size = {x = 1000.0; y = 500.0; z = 500.0;};
            material = {
                color = {r = 0.0; g = 255.0; b = 255.0; a = 255.0;};
                # Taux de reflet de la lumière
                shininess = 1.0;
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est ambiante)
                ambient = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                diffuse = {x = 1.0; y = 1.0; z = 1.0};
                # Utilisé pour modifier le taux de reflet/couleur de la sphere (quand la lumière est une lampe)
                specular = {x = 1.0; y = 1.0; z = 1.0};
                type = "PlainMaterial";
            };
        }
    );
};

# Configuration de la lumière
lights: {
    AmbientLight = (
        # Première lampe de type AmbientLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus la puissance de la lampe
                # Y/Z: mettre 0.0
                scale = {x = 1.0; y = 0.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair partout?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 50.0; g = 50.0; b = 50.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
        }
    );
    SpotLight = (
        {
            transform = {
                # Position de la lampe
                position = {x = -50.0; y = 0.0; z = 0.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: agrandis/diminus l'angle de la lampe
                scale = {x = 1.0; y = 1.0; z = 1.0;};
                # vecteur normalisé de direction de la lampe
                rotation = {x = 0.0; y = 1.0; z = -0.5;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 5.0;
            # Rayon du chants d'actions de la lumière
            radius = 500.0;
            # Angle de la lampe (comme le cone)
            angle = 50.0;
        }
    );
    PointLight = (
        # Première lampe de type PointLight
        {
            transform = {
                # Position de la lampe
                position = {x = 150.0; y = 0.0; z = 100.0;};
                # X: agrandis/diminus le rayon de la lampe
                # Y: agrandis/diminus la puissance de la lampe
                # Z: mettre 0.0
                scale = {x = 1.0; y = 1.0; z = 0.0;};
                # X/Y/Z: mettre 0.0 (à quoi ça sert de changer la rotation d'une lampe qui écair de tous les cotés?)
                rotation = {x = 0.0; y = 0.0; z = 0.0;};
            };
            # Couleur de la lampe
            color = {r = 255.0; g = 126.0; b = 300.0; a = 255.0;};
            # Puissance de la lampe (plus il est grand, plus il comptera par rapport aux autres lumières)
            power = 1.0;
            # Rayon du chants d'actions de la lumière (au-delà la lumière n'éclair pas)
            radius = 500.0;
        }
    );
}

Gource

gource

(if the video does not pop: gource)