Content deleted Content added
m linking |
Make a broader link to the whole concept rather than linking individual words. The linked page will link to the individual words if they are relevant |
||
(11 intermediate revisions by 10 users not shown) | |||
Line 1:
{{short description|Simulation of light in computer graphics}}
'''Computer graphics lighting'''
== Light sources ==
Line 8:
=== Point ===
Point sources emit light from a single point in all directions, with the intensity of the light decreasing with distance.<ref name=":72">{{Cite web|url=https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/LightingAndShading.html|title=Intro to Computer Graphics: Lighting and Shading|website=www.cs.uic.edu|access-date=2019-11-05}}</ref> An example of a point source is a standalone light bulb.<ref name=":8">{{Cite web|url=http://www.bcchang.com/immersive/ygbasics/lighting.html|title=Lighting in 3D Graphics|website=www.bcchang.com|access-date=2019-11-05}}</ref>
[[File:Real-time Raymarched Terrain.png|thumb|309x309px|A directional light source illuminating a terrain
=== Directional ===
Line 14:
=== Spotlight ===
A spotlight produces a directed [[cone]] of light.<ref name=":73">{{Cite web|url=https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/LightingAndShading.html|title=Intro to Computer Graphics: Lighting and Shading|website=www.cs.uic.edu|access-date=2019-11-05}}</ref> The light becomes more intense as
=== Area ===
Area lights are 3D objects which emit light. Whereas point lights and spot lights sources are considered infinitesimally small points, area lights are treated as physical shapes.<ref>{{cite conference |last1=Lagarde |first1=Sebastien |author-link1= |last2=de Rousiers |first2=Charles |author-link2= |date=Summer 2014 |title=Moving Frostbite to Physically Based Rendering 3.0 |url=https://www.ea.com/frostbite/news/moving-frostbite-to-pb |conference=SIGGRAPH |___location= |publisher= |pages= |id= |book-title=}}</ref> Area light produce softer shadows and more realistic lighting than point lights and spot lights.<ref>{{Cite book |
=== Ambient ===
Line 23:
=== Lightwarp ===
A lightwarp is a technique of which an object in the geometrical world [[refracts]] light based on the [[Unit vector|direction]] and [[Intensity (physics)|intensity]] of the light. The light is then [[Wave function|warped]] using an ambient diffuse term with a range of the [[color spectrum]]. The light then may be [[reflectively]] scattered to produce a higher [[depth of field]], and [[refracted]]. The technique is used to produce a [[Style_(visual_arts)#Stylization|unique rendering style]] and can be used to limit [[overexposure]] of objects. Games such as [[Team Fortress 2]] use the rendering technique to create a [[cartoon]] [[cel shaded]] stylized look.<ref>{{Cite
===HDRI===
HDRI stands for High dynamic range image and is a 360° image that is wrapped around a [[3D modeling|3D model]] as an outdoor setting and uses the sun typically as a light source in the sky. The [[Texture mapping|textures]] from the model can reflect the direct and [[Shading#Ambient lighting|ambient light]] and colors from the HDRI.<ref>{{cite web | url=https://visao.ca/what-is-hdri/#:~:text=High%20dynamic%20range%20images%20are,look%20cartoonish%20and%20less%20professional. | title=What are HDRI images? | date=13 January 2021 }}</ref>
== Lighting interactions ==
In computer graphics, the overall effect of a light source on an object is determined by the combination of the object's interactions with it usually described by at least three main components.<ref name=":82">{{Cite web|url=http://www.bcchang.com/immersive/ygbasics/lighting.html|title=Lighting in 3D Graphics|website=www.bcchang.com|access-date=2019-11-05}}</ref> The three primary lighting components (and subsequent interaction types) are diffuse, ambient, and specular.<ref name=":82" />
[[File:Phong components revised.png|thumb|544x544px|Decomposition of lighting interactions
=== Diffuse ===
Line 59 ⟶ 62:
{{Main articles|Ray tracing (graphics)}}
[[File:Ray-traced steel balls.jpg|thumb|Image rendered using ray tracing]]
Light sources emit rays that interact with various surfaces through absorption, reflection, or refraction.<ref name=":72" /> An observer of the scene would see any light source that reaches their eyes; a ray that does not reach the observer goes unnoticed.<ref>{{Cite web|url=https://developer.nvidia.com/rtx/raytracing|title=Introducing the NVIDIA RTX Ray Tracing Platform|date=2018-03-06|website=NVIDIA Developer|language=en|access-date=2019-11-08}}</ref> It is possible to simulate this by having all of the light sources emit rays and then compute how each of them interact with all of the objects in the scene.<ref name=":17">Reif, J. H. (1994). "[https://users.cs.duke.edu/~reif/paper/tygar/raytracing.pdf Computability and Complexity of Ray Tracing]"(PDF). ''Discrete and Computational Geometry''.</ref> However, this process is inefficient as most of the light rays would not reach the observer and would waste processing time.<ref name=":21">Wallace, John R.; Cohen, Michael F.; Greenberg, Donald P. (1987). "A Two-pass Solution to the Rendering Equation: A Synthesis of Ray Tracing and Radiosity Methods". ''Proceedings of the 14th Annual Conference on Computer Graphics and Interactive Techniques''. SIGGRAPH '87. New York, NY, USA: ACM: 311–320. {{doi|10.1145/37401.37438}}. {{ISBN|9780897912273}}.</ref> Ray tracing solves this problem by reversing the process, instead sending view rays from the observer and calculating how they interact until they reach a light source.<ref name=":17" /> Although this way more effectively uses processing time and produces a light simulation closely imitating natural lighting, ray tracing still has high computation costs due to the high amounts of light that reach viewer's eyes.<ref name=":0">{{Cite journal|last=Greenberg|first=Donald P.|date=1989-04-14|title=Light Reflection Models for Computer Graphics|journal=Science|language=en|volume=244|issue=4901|pages=166–173|doi=10.1126/science.244.4901.166|issn=0036-8075|pmid=17835348|bibcode=1989Sci...244..166G |s2cid=46575183 }}</ref>
==== Radiosity ====
Line 73 ⟶ 76:
Polygonal [[shading]] is part of the [[Rasterisation|rasterization]] process where [[3D computer graphics|3D]] models are drawn as [[2D computer graphics|2D]] pixel images.<ref name=":4">{{Cite web|url=https://cglearn.codelight.eu/pub/computer-graphics/shading-and-lighting|title=Computer Graphics: Shading and Lighting|website=cglearn.codelight.eu|access-date=2019-10-30}}</ref> Shading applies a lighting model, in conjunction with the geometric attributes of the 3D model, to determine how lighting should be represented at each [[Fragment (computer graphics)|fragment]] (or pixel) of the resulting image.<ref name=":4" /> The [[Polygon mesh|polygons]] of the 3D model store the geometric values needed for the shading process.<ref name=":11">{{Cite web|url=http://math.hws.edu/graphicsbook/c4/s1.html|title=Introduction to Computer Graphics, Section 4.1 -- Introduction to Lighting|website=math.hws.edu}}</ref> This information includes [[Vertex (geometry)|vertex]] positional values and [[Normal (geometry)|surface normals]], but can contain optional data, such as [[Texture mapping|texture]] and [[Bump mapping|bump]] maps.<ref>{{Cite web|url=https://www.khronos.org/opengl/wiki/Vertex_Specification#Primitives|title=Vertex Specification - OpenGL Wiki|website=www.khronos.org|access-date=2019-11-06}}</ref>
[[File:Flatshading00.png|alt=|thumb|165x165px|An example of flat shading
[[File:Gouraudshading01.png|alt=|thumb|165x165px|An example of Gouraud shading
[[File:Phongshading00.png|alt=|thumb|165x165px|An example of Phong shading
=== Flat shading ===
Line 87 ⟶ 90:
== Lighting effects ==
[[File:Miroir-cercle.jpg|thumb|A reflective material demonstrating caustics
=== Caustics ===
|