2. AOI (Angle of Incidence)

2.1. Description

Un nouveau pattern, "angle d'incidence". Ce pattern retourne une valeur comprise entre 0 et 1 suivant l'angle entre la normale (normale perturbée) d'un objet et, au choix, un vecteur "point fixe - point d'intersection" ou le rayon de vue.

2.2. Syntaxe

pigment { aoi [point] .... }

si aucun point n'est spécifié le pattern est calculé par rapport au rayon incident.

Warning :  Si le rayon incident est utilisé les valeurs de retour sont comprises entre 0 et 0.5 !

2.3. Exemples

AOI sans argument
Pattern aoi sans argument
pigment { aoi }

Pas de point précisé, le pattern utilise le rayon incident.

AOI avec point à la caméra
Pattern aoi avec point = position caméra
pigment { aoi pt_cam }

pt_cam est le point ou est placée la caméra. L'angle est donc calculé entre le vecteur normal à la surface de l'objet et le vecteur "pt_cam - point d'intersection".

AOI avec normale
Pattern aoi avec normale perturbée
pigment { aoi pt_cam } normal { ripples .6 }

Le pattern prend en compte la normale perturbée.

AOI avec une color_map
Pattern aoi avec une color_map
pigment { aoi pt_lum color_map { ... } }

Un exemple avec un autre point pour le calcul et une color_map.

2.4. Program

Look for #ifdef AOI_PATCH in sources

A new vector (incident ray direction) was added to the intersection struct (istk_entry). It is assigned at the beginning of Determine_Apparent_Colour.

Possible improvements/problems

  • An option could allow to return "cos(angle)" instead of "angle"