Tipi di luceLight types

La proprietà del tipo di luce definisce il tipo di sorgente di luce in uso.The light type property defines which type of light source you're using. Esistono tre tipi di luce in Direct3D: luci puntiformi, riflettori e luci direzionali.There are three types of lights in Direct3D - point lights, spotlights, and directional lights. Ogni tipo illumina diversamente gli oggetti in una scena, con livelli diversi di sovraccarico di elaborazione.Each type illuminates objects in a scene differently, with varying levels of computational overhead.

Luce puntiformePoint Light

Le luci puntiformi presentano colore e posizione in una scena, ma non una singola direzione.Point lights have color and position within a scene, but no single direction. Emettono luce in modo uniforme in tutte le direzioni, come illustrato nella figura seguente.They give off light equally in all directions, as shown in the following illustration.

illustrazione di luce puntiforme

Una lampadina rappresenta un esempio calzante di luce puntiforme.A light bulb is a good example of a point light. Le luci puntiformi sono influenzate da attenuazione e portata e illuminano una mesh vertice per vertice.Point lights are affected by attenuation and range, and illuminate a mesh on a vertex-by-vertex basis. Durante l'illuminazione, Direct3D usa la posizione della luce puntiforme nello spazio globale e le coordinate del vertice illuminato per ricavare un vettore per la direzione della luce e la distanza percorsa dalla luce.During lighting, Direct3D uses the point light's position in world space and the coordinates of the vertex being lit to derive a vector for the direction of the light, and the distance that the light has traveled. Entrambi vengono utilizzati, insieme alla normale del vertice, per calcolare il contributo della luce per l'illuminazione della superficie.Both are used, along with the vertex normal, to calculate the contribution of the light to the illumination of the surface.

Luce direzionaleDirectional Light

Le luci direzionali presentano solo colore e direzione, non la posizione.Directional lights have only color and direction, not position. Emettono luce parallela.They emit parallel light. Ciò significa che la luce generata dalle luci direzionali attraversa una scena nella stessa direzione.This means that all light generated by directional lights travels through a scene in the same direction. Pensa a una luce direzionale come a una sorgente di luce a distanza quasi infinita, come il sole.Imagine a directional light as a light source at near infinite distance, such as the sun. Le luci direzionali non sono influenzate da attenuazione o portata, pertanto la direzione e il colore specificati sono gli unici fattori considerati quando Direct3D calcola i colori dei vertici.Directional lights are not affected by attenuation or range, so the direction and color you specify are the only factors considered when Direct3D calculates vertex colors. Per via del numero ridotto di fattori di illuminazione, si tratta delle luci con uso meno intensivo di risorse di calcolo.Because of the small number of illumination factors, these are the least computationally intensive lights to use.

In primo pianoSpotLight

I riflettori presentano colore, posizione e direzione in cui emettono luce.Spotlights have color, position, and direction in which they emit light. La luce emessa da un riflettore è composta da un cono interno luminoso e uno esterno più grande in cui l'intensità tra i due diminuisce, come illustrato nella figura seguente.Light emitted from a spotlight is made up of a bright inner cone and a larger outer cone, with the light intensity diminishing between the two, as shown in the following illustration.

illustrazione di un riflettore con un cono interno e un cono esterno

I riflettori sono influenzati da riduzione, attenuazione e portata.Spotlights are affected by falloff, attenuation, and range. Questi fattori, insieme alla distanza percorsa dalla luce verso ogni vertice, entrano in gioco durante il calcolo degli effetti di illuminazione per gli oggetti in una scena.These factors, as well as the distance light travels to each vertex, are figured in when computing lighting effects for objects in a scene. Il calcolo di questi effetti per ogni vertice rende i riflettori le luci con uso più intensivo di risorse di calcolo in Direct3D.Computing these effects for each vertex makes spotlights the most computationally time-consuming of all lights in Direct3D.

I valori di riduzione, theta e phi vengono utilizzati solo dai riflettori.Falloff, Theta, and Phi values are used only by spotlights. Questi valori controllano la dimensione dei coni interno ed esterno di un riflettore e il modo in cui la luce diminuisce tra loro.These values control how large or small a spotlight object's inner and outer cones are, and how light decreases between them.

Il valore theta è l'angolo radiante del cono interno del riflettore e il valore phi l'angolo del cono esterno di luce.Theta is the radian angle of the spotlight's inner cone, and the Phi value is the angle for the outer cone of light. Il valore di riduzione controlla la diminuzione di intensità della luce tra il bordo esterno del cono interno e il bordo interno del cono esterno.Falloff controls how light intensity decreases between the outer edge of the inner cone and the inner edge of the outer cone. La maggior parte delle applicazioni imposta il valore di riduzione su 1,0 per creare la riduzione che si verifica in modo uniforme tra i due coni, ma è possibile impostare altri valori in base alle esigenze.Most applications set Falloff to 1.0 to create falloff that occurs evenly between the two cones, but you can set other values as needed.

La figura seguente illustra la relazione tra questi valori e il modo in cui possono influenzare i coni di luce interno ed esterno di un riflettore.The following illustration shows the relationship between these values and how they can affect a spotlight's inner and outer cones of light.

illustrazione del modo in cui i valori phi e theta si relazionano ai coni dei riflettori

I riflettori emettono un cono di luce composto da due parti: un cono interno luminoso e un cono esterno.Spotlights emit a cone of light that has two parts: a bright inner cone and an outer cone. La luce è più luminosa nel cono interno e non è presente al di fuori del cono esterno, con un'attenuazione dell'intensità tra le due aree.Light is brightest in the inner cone and isn't present outside the outer cone, with light intensity attenuating between the two areas. Questo tipo di attenuazione è comunemente nota come riduzione.This type of attenuation is commonly referred to as falloff.

La quantità di luce che riceve un vertice si basa sulla sua posizione nei coni interno o esterno.The amount of light a vertex receives is based on the vertex's location in the inner or outer cones. Direct3D calcola il prodotto scalare del vettore di direzione del riflettore (L) e del vettore dalla luce al vertice (D).Direct3D computes the dot product of the spotlight's direction vector (L) and the vector from the light to the vertex (D). Questo valore equivale al coseno dell'angolo tra i due vettori e viene utilizzato come indicatore della posizione del vertice confrontabile con gli angoli dei coni della luce per determinare la posizione del vertice nel cono interno o esterno.This value is equal to the cosine of the angle between the two vectors, and serves as an indicator of the vertex's position that can be compared to the light's cone angles to determine where the vertex might lie in the inner or outer cones. La seguente figura offre una rappresentazione grafica dell'associazione tra questi due vettori.The following illustration provides a graphical representation of the association between these two vectors.

illustrazione del vettore di direzione del riflettore e del vettore dal vertice al riflettore

Il sistema confronta questo valore con il coseno degli angoli dei coni interno ed esterno del riflettore.The system compares this value to the cosine of the spotlight's inner and outer cone angles. I valori theta e phi della luce rappresentano gli angoli totali dei coni interno ed esterno.The light's Theta and Phi values represent the total cone angles for the inner and outer cones. Poiché l'attenuazione si verifica quando il vertice è più distante dal centro di illuminazione (anziché sugli angoli totali dei coni), il runtime dimezza questi angoli prima di calcolarne i coseni.Because the attenuation occurs as the vertex becomes more distant from the center of illumination (rather than across the total cone angle), the runtime divides these cone angles in half before calculating their cosines.

Se il prodotto scalare dei vettori L e D è minore o uguale al coseno dell'angolo del cono esterno, il vertice si trova oltre il cono esterno e non riceve luce.If the dot product of vectors L and D is less than or equal to the cosine of the outer cone angle, the vertex lies beyond the outer cone and receives no light. Se il prodotto scalare di L e D è maggiore del coseno dell'angolo del cono interno, il vertice è nel cono interno e riceve la quantità massima di luce, considerando comunque l'attenuazione sulla distanza.If the dot product of L and D is greater than the cosine of the inner cone angle, then the vertex is within the inner cone and receives the maximum amount of light, still considering attenuation over distance. Se il vertice si trova in un punto tra le due aree, la riduzione viene calcolata con la seguente equazione.If the vertex is somewhere between the two regions, then falloff is calculated with the following equation.

formula per l'intensità della luce al vertice, dopo la riduzione

dove:where:

  • If è l'intensità della luce dopo la riduzioneIf is light intensity after falloff
  • Alfa è l'angolo tra i vettori L e DAlpha is the angle between vectors L and D
  • Teta è l'angolo del cono internoTheta is the inner cone angle
  • Phi è l'angolo del cono esternoPhi is the outer cone angle
  • P è la riduzionep is the falloff

Questa formula genera un valore compreso tra 0,0 e 1,0 che ridimensiona l'intensità della luce al vertice per tenere conto della riduzione.This formula generates a value between 0.0 and 1.0 that scales the light's intensity at the vertex to account for falloff. Viene inoltre applicata l'attenuazione come fattore di distanza del vertice dalla luce.Attenuation as a factor of the vertex's distance from the light is also applied. Il grafico seguente mostra il modo in cui valori di riduzione diversi possono influenzare la curva di riduzione.The following graph shows how different falloff values can affect the falloff curve.

grafico dell'intensità della luce rispetto alla distanza del vertice dalla luce

L'effetto dei diversi valori di riduzione sull'illuminazione effettiva è sottile e si verifica una lieve diminuzione delle prestazioni in caso di creazione della curva di riduzione con valori diversi da 1.0.The effect of various falloff values on the actual lighting is subtle, and a small performance penalty is incurred by shaping the falloff curve with falloff values other than 1.0. Per questi motivi, il valore viene in genere impostato su 1,0.For these reasons, this value is typically set to 1.0.

Argomenti correlatiRelated topics

Le luci e materialiLights and materials