Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Rendering (computer graphics)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Radiosity === {{Main|Radiosity (computer graphics)}} [[File:Classical radiosity example, simple scene, no interpolation, direct only and full.png|thumb|Classical radiosity demonstration. Surfaces are divided into 16x16 or 16x32 meshes. Top: direct light only. Bottom: radiosity solution (for [[albedo]] 0.85).]] [[File:Classical radiosity comparison with path tracing, simple scene, interpolated.png|thumb|Top: the same scene with a finer radiosity mesh, smoothing the patches during final rendering using [[bilinear interpolation]]. Bottom: the scene rendered with path tracing (using the PBRT renderer).]] Radiosity (named after the [[Radiosity (radiometry)|radiometric quantity of the same name]]) is a method for rendering objects illuminated by light [[Diffuse reflection|bouncing off rough or matte surfaces]]. This type of illumination is called ''indirect light'', ''environment lighting'', ''diffuse lighting'', or ''diffuse interreflection'', and the problem of rendering it realistically is called ''global illumination''. Rasterization and basic forms of ray tracing (other than distribution ray tracing and path tracing) can only roughly approximate indirect light, e.g. by adding a uniform "ambient" lighting amount chosen by the artist. Radiosity techniques are also suited to rendering scenes with ''area lights'' such as rectangular fluorescent lighting panels, which are difficult for rasterization and traditional ray tracing. Radiosity is considered a [[Physically based rendering|physically-based method]], meaning that it aims to simulate the flow of light in an environment using equations and experimental data from physics, however it often assumes that all surfaces are opaque and perfectly [[Lambertian reflectance|Lambertian]], which reduces realism and limits its applicability.{{r|AkenineMöller2018|loc=10, 11.2.1}}{{r|Glassner95|p=888, 893}}{{r|Goral1984}}{{r|Cohen1993|p=6}} In the original radiosity method (first proposed in 1984) now called ''classical radiosity'', surfaces and lights in the scene are split into pieces called ''patches'', a process called ''[[Mesh generation|meshing]]'' (this step makes it a [[finite element method]]). The rendering code must then determine what fraction of the light being emitted or [[Diffuse reflection|diffusely reflected]] (scattered) by each patch is received by each other patch. These fractions are called ''form factors'' or ''[[view factor]]s'' (first used in engineering to model [[Thermal radiation|radiative heat transfer]]). The form factors are multiplied by the [[albedo]] of the receiving surface and put in a [[Matrix (mathematics)|matrix]]. The lighting in the scene can then be expressed as a matrix equation (or equivalently a [[system of linear equations]]) that can be solved by methods from [[linear algebra]].{{r|Goral1984}}{{r|Dutré2003|p=46}}{{r|Glassner95|p=888, 896}} Solving the radiosity equation gives the total amount of light emitted and reflected by each patch, which is divided by area to get a value called ''[[Radiosity (radiometry)|radiosity]]'' that can be used when rasterizing or ray tracing to determine the color of pixels corresponding to visible parts of the patch. For real-time rendering, this value (or more commonly the [[irradiance]], which does not depend on local surface albedo) can be pre-computed and stored in a texture (called an ''irradiance map'') or stored as vertex data for 3D models. This feature was used in architectural visualization software to allow real-time walk-throughs of a building interior after computing the lighting.{{r|Glassner95|p=890}}{{r|AkenineMöller2018|loc=11.5.1}}{{r|Cohen1993|p=332}} The large size of the matrices used in classical radiosity (the square of the number of patches) causes problems for realistic scenes. Practical implementations may use [[Jacobi method|Jacobi]] or [[Gauss–Seidel method|Gauss-Seidel]] iterations, which is equivalent (at least in the Jacobi case) to simulating the propagation of light one bounce at a time until the amount of light remaining (not yet absorbed by surfaces) is insignificant. The number of iterations (bounces) required is dependent on the scene, not the number of patches, so the total work is proportional to the square of the number of patches (in contrast, solving the matrix equation using [[Gaussian elimination]] requires work proportional to the cube of the number of patches). Form factors may be recomputed when they are needed, to avoid storing a complete matrix in memory.{{r|Glassner95|pp=901, 907}} The quality of rendering is often determined by the size of the patches, e.g. very fine meshes are needed to depict the edges of shadows accurately. An important improvement is ''hierarchical radiosity'', which uses a coarser mesh (larger patches) for simulating the transfer of light between surfaces that are far away from one another, and adaptively sub-divides the patches as needed. This allows radiosity to be used for much larger and more complex scenes.{{r|Glassner95|pp=975, 939}} Alternative and extended versions of the radiosity method support non-Lambertian surfaces, such as glossy surfaces and mirrors, and sometimes use volumes or "clusters" of objects as well as surface patches. Stochastic or [[Monte Carlo method|Monte Carlo]] radiosity uses [[Sampling (statistics)|random sampling]] in various ways, e.g. taking samples of incident light instead of integrating over all patches, which can improve performance but adds noise (this noise can be reduced by using deterministic iterations as a final step, unlike path tracing noise). Simplified and partially precomputed versions of radiosity are widely used for real-time rendering, combined with techniques such as ''[[octree]] radiosity'' that store approximations of the [[light field]].{{r|Glassner95|pp=979, 982}}{{r|Dutré2003|p=49}}{{r|Bekaert1999}}{{r|AkenineMöller2018|loc=11.5}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)