Knowledge

Shadow mapping

Source 📝

130: 200: 392: 122: 39: 468: 31: 257:
matrix multiplication to map those −1 to 1 values to 0 to 1, which are more usual coordinates for depth map (texture map) lookup. This scaling can be done before the perspective division, and is easily folded into the previous transformation calculation by multiplying that matrix with the following:
92:
If you looked out from a source of light, all the objects you can see would appear in light. Anything behind those objects, however, would be in shadow. This is the basic principle used to create a shadow map. The light's view is rendered, storing the depth of every surface it sees (the shadow map).
190:
coordinates with axis X and Y to represent its geometric shape on screen, these vertex coordinates will match up with the corresponding edges of the shadow parts within the shadow map (depth map) itself. The second step is the depth test which compares the object z values against the z values from
536:
or shadow continuity glitches. A simple way to overcome this limitation is to increase the shadow map size, but due to memory, computational or hardware constraints, it is not always possible. Commonly used techniques for real-time shadow mapping have been developed to circumvent this limitation.
164:
In many implementations, it is practical to render only a subset of the objects in the scene to the shadow map to save some of the time it takes to redraw the map. Also, a depth offset which shifts the objects away from the light may be applied to the shadow map rendering in an attempt to resolve
448:
implementation, this test would be done at the fragment level. Also, care needs to be taken when selecting the type of texture map storage to be used by the hardware: if interpolation cannot be done, the shadow will appear to have a sharp, jagged edge (an effect that can be reduced with greater
544:, several solutions have been developed, either by doing several lookups on the shadow map, generating geometry meant to emulate the soft edge or creating non-standard depth shadow maps. Notable examples of these are Percentage Closer Filtering, Smoothies, and Variance Shadow maps. 375: 160:
This depth map must be updated any time there are changes to either the light or the objects in the scene, but can be reused in other situations, such as those where only the viewing camera moves. (If there are multiple lights, a separate depth map must be used for each light.)
100:, but the shadow map can be a faster alternative depending on how much fill time is required for either technique in a particular application and therefore may be more suitable to real-time applications. In addition, shadow maps do not require the use of an additional 169:
problems where the depth map value is close to the depth of a surface being drawn (i.e., the shadow-casting surface) in the next step. Alternatively, culling front faces and only rendering the back of objects to the shadow map is sometimes used for a similar result.
152:
From this rendering, the depth buffer is extracted and saved. Because only the depth information is relevant, it is common to avoid updating the color buffers and disable all lighting and texture calculations for this rendering, to save drawing time. This
112:
Rendering a shadowed scene involves two major drawing steps. The first produces the shadow map itself, and the second applies it to the scene. Depending on the implementation (and the number of lights), this may require two or more drawing passes.
479:
are available, the depth map test may be performed by a fragment shader which simply draws the object in shadow or lighted depending on the result, drawing the scene in a single pass (after an initial earlier pass to generate the shadow map).
263: 500:) this should technically be done using only the ambient component of the light, but this is usually adjusted to also include a dim diffuse light to prevent curved surfaces from appearing flat in shadow. 383:, or other graphics hardware extension, this transformation is usually applied at the vertex level, and the generated value is interpolated between other vertices and passed to the fragment level. 452:
It is possible to modify the depth map test to produce shadows with a soft edge by using a range of values (based on the proximity to the edge of the shadow) rather than simply pass or fail.
207:
To test a point against the depth map, its position in the scene coordinates must be transformed into the equivalent position as seen by the light. This is accomplished by a
65:
in 1978, in a paper entitled "Casting curved shadows on curved surfaces." Since then, it has been used both in pre-rendered and realtime scenes in many console and PC games.
532:
One of the key disadvantages of real-time shadow mapping is that the size and depth of the shadow map determine the quality of the final shadows. This is usually visible as
218:
The matrix used to transform the world coordinates into the light's viewing coordinates is the same as the one used to render the shadow map in the first step (under
1083: 182:
viewpoint, applying the shadow map. This process has three major components. The first step is to find the coordinates of the object as seen from the light, as a
93:
Next, the regular scene is rendered comparing the depth of every point drawn (as if it were being seen by the light, rather than the eye) to this depth map.
510:
to combine their effect with the lights already drawn. (Each of these passes requires an additional previous pass to generate the associated shadow map.)
650: 104:
and can be modified to produce shadows with a soft edge. Unlike shadow volumes, however, the accuracy of a shadow map is limited by its resolution.
1167: 763: 706: 441:) location falls outside the depth map, the programmer must either decide that the surface should be lit or shadowed by default (usually lit). 540:
Also notable is that generated shadows, even if aliasing free, have hard edges, which is not always desirable. In order to emulate real world
942: 575: 370:{\displaystyle {\begin{bmatrix}0.5&0&0&0.5\\0&0.5&0&0.5\\0&0&0.5&0.5\\0&0&0&1\end{bmatrix}}} 503:
Enable the depth map test and render the scene lit. Areas where the depth map test fails will not be overwritten and will remain shadowed.
1364: 916: 843: 1075: 537:
These include Cascaded Shadow Maps, Trapezoidal Shadow Maps, Light Space Perspective Shadow maps, or Parallel-Split Shadow maps.
489:), which usually does not allow a choice between two lighting models (lit and shadowed), and necessitate more rendering passes: 644: 1753: 1726: 926: 745: 483:
If shaders are not available, performing the depth map test must usually be implemented by some hardware extension (such as
1769: 1373: 141:
as wide as its desired angle of effect (it will be a sort of square spotlight). For directional light (e.g., that from the
62: 459:. The picture above captioned "visualization of the depth map projected onto the scene" is an example of such a process. 1493: 1316: 455:
The shadow mapping technique can also be modified to draw a texture onto the lit regions, simulating the effect of a
830: 1337: 651:
https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps
1357: 1227: 1202: 137:
The first step renders the scene from the light's point of view. For a point light source, the view should be a
1616: 1417: 1307: 1273: 1741: 1731: 1621: 1440: 764:
https://web.archive.org/web/20101208212121/http://visual-computing.intel-research.net/art/publications/sdsm/
707:
https://web.archive.org/web/20101208213624/http://visual-computing.intel-research.net/art/publications/avsm/
1736: 1601: 1541: 541: 669: 576:
http://developer.download.nvidia.com/SDK/10.5/opengl/src/cascaded_shadow_maps/doc/cascaded_shadow_maps.pdf
249:) falls between −1 and 1 (if it is visible from the light view). Many implementations (such as OpenGL and 1529: 1350: 17: 191:
the depth map, and finally, once accomplished, the object must be drawn either in shadow or in light.
1327: 852:
performs the shadow test in eye-space rather than light-space to keep texture access more sequential.
212: 1160: 1060: 1018: 976: 901: 638: 569: 1104: 619: 223: 183: 146: 871: 751: 426:) location, the object is considered to be behind an occluding object and should be marked as a 1748: 1698: 1663: 1641: 1636: 819: 496: 179: 138: 769: 519: 1591: 1570: 1514: 1322: 1147: 1047: 1005: 963: 888: 208: 1474: 1460: 1404: 733: 645:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.2569&rep=rep1&type=pdf
58: 746:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.59.3376&rep=rep1&type=pdf
727: 632: 411:
value corresponds to its associated depth, which can now be tested against the depth map.
222:
this is the product of the modelview and projection matrices). This will produce a set of
8: 1606: 1534: 1422: 757: 215:, but a second set of coordinates must be generated to locate the object in light space. 187: 1133: 775: 1668: 1656: 1503: 1498: 1450: 1279: 681: 484: 475:
Drawing the scene with shadows can be done in several different ways. If programmable
1718: 1611: 1596: 1412: 1269: 922: 721: 700: 600: 507: 675: 1790: 1703: 1693: 1575: 1563: 1261: 430:, to be drawn in shadow by the drawing process. Otherwise, it should be drawn lit. 1283: 588: 1524: 1389: 1381: 1258:
Proceedings of the 2006 symposium on Interactive 3D graphics and games - SI3D '06
1033: 456: 81: 1332: 1323:
Riemer's step-by-step tutorial implementing Shadow Mapping with HLSL and DirectX
606: 1129: 824: 101: 1784: 1678: 1552: 1482: 991: 809: 594: 229: 97: 1265: 849: 418:
value is greater than the value stored in the depth map at the appropriate (
1683: 1646: 1631: 1626: 1546: 1487: 1031: 1253: 407:
values usually correspond to a location in the depth map texture, and the
1651: 1519: 1455: 815: 73: 493:
Render the entire scene in shadow. For the most common lighting models (
670:
http://developer.download.nvidia.com/shaderlibrary/docs/shadow_PCSS.pdf
166: 687: 211:. The location of the object on the screen is determined by the usual 154: 1342: 1509: 1127: 915:
Akenine-Mo ̈ller, Tomas; Haines, Eric; Hoffman, Naty (2018-08-06).
533: 250: 1558: 739: 712: 639:
https://doclib.uhasselt.be/dspace/bitstream/1942/8040/1/3227.pdf
570:
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch10.html
506:
An additional pass may be used for each additional light, using
1688: 1445: 1311: 1182: 1108: 949: 515: 476: 445: 380: 219: 54: 620:
https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch11.html
72:
is visible from the light source, by comparing the pixel to a
1708: 1394: 914: 752:
http://www.cspaul.com/doku.php?id=publications:rosen.2012.i3d
129: 69: 1180: 827:, a much slower technique capable of very realistic lighting 656: 38: 1432: 1073: 992:"Anti-aliasing and Continuity with Trapezoidal Shadow Maps" 770:
http://image.diku.dk/projects/media/morten.mikkelsen.07.pdf
199: 391: 80:
image of the light source's view, stored in the form of a
1260:. Association for Computing Machinery. pp. 161–165. 142: 121: 87: 734:
http://www.cs.unc.edu/~zhangh/technotes/shadow/shadow.ps
728:
http://graphics.pixar.com/library/DeepShadows/paper.pdf
633:
https://discovery.ucl.ac.uk/id/eprint/10001/1/10001.pdf
527: 467: 203:
Visualization of the depth map projected onto the scene
30: 1252:
Donnelly, William; Lauritzen, Andrew (14 March 2006).
989: 758:
http://www.idav.ucdavis.edu/func/return_pdf?pub_id=919
272: 1032:
Michael Wimmer; Daniel Scherzer; Werner Purgathofer.
776:
http://graphics.stanford.edu/papers/silmap/silmap.pdf
266: 524:
to accomplish the shadow map process in two passes.
178:
The second step is to draw the scene from the usual
1338:
Shadow Mapping implementation using Java and OpenGL
682:
http://www.crcnetbase.com/doi/abs/10.1201/b10648-36
701:http://www.cs.cornell.edu/~kb/publications/ASM.pdf 601:http://www-sop.inria.fr/reves/Marc.Stamminger/psm/ 369: 1333:NVIDIA Real-time Shadow Algorithms and Techniques 1251: 1076:"Parallel-Split Shadow Maps on Programmable GPUs" 722:http://sites.google.com/site/osmanbrian2/dpsm.pdf 676:https://jankautz.com/publications/VSSM_PG2010.pdf 157:is often stored as a texture in graphics memory. 27:Method to draw shadows in computer graphic images 1782: 1203:"Common Techniques to Improve Shadow Depth Maps" 833:, another very slow but very realistic technique 399:Once the light-space coordinates are found, the 589:https://www.cg.tuwien.ac.at/research/vr/lispsm/ 514:The example pictures in this article used the 1358: 655:SMSR "Shadow Map Silhouette Revectorization" 607:http://bib.irb.hr/datoteka/570987.12_CSSM.pdf 1134:"Rendering Fake Soft Shadows with Smoothies" 844:Smooth Penumbra Transitions with Shadow Maps 793:Light Space Perspective Shadow Maps (LSPSMs) 547: 1317:Shadow Mapping with Today's OpenGL Hardware 872:"Casting curved shadows on curved surfaces" 1365: 1351: 1328:Improvements for Shadow Mapping using GLSL 869: 595:http://www.comp.nus.edu.sg/~tants/tsm.html 471:Final scene, rendered with ambient shadows 194: 116: 1166:CS1 maint: multiple names: authors list ( 68:Shadows are created by testing whether a 466: 390: 198: 128: 120: 37: 29: 14: 1783: 88:Principle of a shadow and a shadow map 1372: 1346: 1074:Fan Zhang; Hanqiu Sun; Oskari Nyman. 1034:"Light Space Perspective Shadow Maps" 768:SPPSM "Separating Plane Perspective" 107: 96:This technique is less accurate than 1770:List of computer graphics algorithms 1181:William Donnelly; Andrew Lauritzen. 674:VSSM "Variance Soft Shadow Mapping" 528:Shadow map real-time implementations 462: 173: 133:Scene from the light view, depth map 1431: 918:Real-Time Rendering, Fourth Edition 818:, a slower technique often used in 688:http://getlab.org/publications/FIV/ 686:FIV "Fullsphere Irradiance Vector" 24: 837: 618:PCF "Percentage Closer Filtering" 226:that need a perspective division ( 125:Scene rendered from the light view 61:. This concept was introduced by 25: 1802: 1301: 680:SSSS "Screen space soft shadows" 587:LiSPSM "Light Space Perspective" 386: 1293:– via ACM Digital Library. 781: 1245: 1220: 1195: 662: 1174: 1121: 1097: 1067: 1025: 990:Tobias Martin; Tiow-Seng Tan. 983: 935: 908: 863: 790:Perspective shadow maps (PSMs) 740:http://gamma.cs.unc.edu/LOGSM/ 13: 1: 1727:3D computer graphics software 856: 812:, another shadowing technique 713:http://free-zg.t-com.hr/cssm/ 649:SAVSM "Summed Area Variance" 235:normalized device coordinates 1542:Hidden-surface determination 625: 612: 562: 7: 803: 799:Variance Shadow Maps (VSMs) 796:Cascaded Shadow Maps (CSMs) 762:SDSM "Sample Distribution" 705:AVSM "Adaptive Volumetric" 693: 237:, in which each component ( 10: 1807: 756:RMSM "Resolution Matched" 581: 1762: 1717: 1584: 1473: 1403: 1380: 1128:Eric Chan, Fredo Durand, 1105:"Shadow Map Antialiasing" 774:SSSM "Shadow Silhouette" 668:PCSS "Percentage Closer" 657:http://bondarev.nl/?p=326 552: 548:Shadow mapping techniques 213:coordinate transformation 34:Scene with shadow mapping 449:shadow map resolution). 253:) require an additional 1754:Vector graphics editors 1749:Raster graphics editors 1308:Hardware Shadow Mapping 1266:10.1145/1111411.1111440 787:Shadow Depth Maps (SDM) 720:DPSM "Dual Paraboloid" 395:Depth map test failures 224:homogeneous coordinates 195:Light space coordinates 147:orthographic projection 117:Creating the shadow map 1637:Checkerboard rendering 1254:"Variance shadow maps" 1228:"Cascaded Shadow Maps" 1183:"Variance Shadow Maps" 1155:Cite journal requires 1055:Cite journal requires 1013:Cite journal requires 971:Cite journal requires 943:"Cascaded shadow maps" 896:Cite journal requires 850:Forward shadow mapping 744:MDSM "Multiple Depth" 568:PSSM "Parallel Split" 497:Phong reflection model 472: 396: 371: 204: 139:perspective projection 134: 126: 53:is a process by which 43: 35: 1592:Affine transformation 1571:Surface triangulation 1515:Anisotropic filtering 521:GL_ARB_shadow_ambient 470: 394: 372: 209:matrix multiplication 202: 132: 124: 42:Scene with no shadows 41: 33: 717:DASM "Deep Adaptive" 711:CSSM "Camera Space" 605:CSSM "Camera Space" 264: 59:3D computer graphics 51:shadowing projection 1607:Collision detection 1535:Global illumination 1086:on January 17, 2010 738:LPSM "Logarithmic" 1657:Scanline rendering 1451:Parallax scrolling 1441:Isometric graphics 1232:Msdn.microsoft.com 1207:Msdn.microsoft.com 750:RTW "Rectilinear" 637:CSM "Convolution" 631:ESM "Exponential" 599:PSM "Perspective" 473: 397: 367: 361: 205: 135: 127: 108:Algorithm overview 44: 36: 1778: 1777: 1719:Graphics software 1612:Planar projection 1597:Back-face culling 1469: 1468: 1413:Alpha compositing 1374:Computer graphics 928:978-1-351-81615-1 846:Willem H. de Boer 508:additive blending 463:Drawing the scene 186:object only uses 174:Shading the scene 16:(Redirected from 1798: 1704:Volume rendering 1576:Wire-frame model 1429: 1428: 1367: 1360: 1353: 1344: 1343: 1295: 1294: 1292: 1290: 1249: 1243: 1242: 1240: 1238: 1224: 1218: 1217: 1215: 1213: 1199: 1193: 1192: 1190: 1189: 1178: 1172: 1171: 1164: 1158: 1153: 1151: 1143: 1141: 1140: 1125: 1119: 1118: 1116: 1115: 1101: 1095: 1094: 1092: 1091: 1082:. Archived from 1071: 1065: 1064: 1058: 1053: 1051: 1043: 1041: 1040: 1029: 1023: 1022: 1016: 1011: 1009: 1001: 999: 998: 987: 981: 980: 974: 969: 967: 959: 957: 956: 947: 939: 933: 932: 912: 906: 905: 899: 894: 892: 884: 882: 881: 876: 870:Lance Williams. 867: 593:TSM "Trapezoid" 376: 374: 373: 368: 366: 365: 149:should be used. 21: 1806: 1805: 1801: 1800: 1799: 1797: 1796: 1795: 1781: 1780: 1779: 1774: 1758: 1713: 1580: 1525:Fluid animation 1465: 1427: 1399: 1390:Diffusion curve 1382:Vector graphics 1376: 1371: 1304: 1299: 1298: 1288: 1286: 1276: 1250: 1246: 1236: 1234: 1226: 1225: 1221: 1211: 1209: 1201: 1200: 1196: 1187: 1185: 1179: 1175: 1165: 1156: 1154: 1145: 1144: 1138: 1136: 1126: 1122: 1113: 1111: 1103: 1102: 1098: 1089: 1087: 1072: 1068: 1056: 1054: 1045: 1044: 1038: 1036: 1030: 1026: 1014: 1012: 1003: 1002: 996: 994: 988: 984: 972: 970: 961: 960: 954: 952: 945: 941: 940: 936: 929: 913: 909: 897: 895: 886: 885: 879: 877: 874: 868: 864: 859: 840: 838:Further reading 806: 784: 699:ASM "Adaptive" 696: 665: 643:VSM "Variance" 628: 615: 584: 574:CSM "Cascaded" 565: 555: 550: 530: 465: 389: 379:If done with a 360: 359: 354: 349: 344: 338: 337: 332: 327: 322: 316: 315: 310: 305: 300: 294: 293: 288: 283: 278: 268: 267: 265: 262: 261: 197: 176: 119: 110: 90: 28: 23: 22: 15: 12: 11: 5: 1804: 1794: 1793: 1776: 1775: 1773: 1772: 1766: 1764: 1760: 1759: 1757: 1756: 1751: 1746: 1745: 1744: 1739: 1734: 1723: 1721: 1715: 1714: 1712: 1711: 1706: 1701: 1696: 1691: 1686: 1681: 1676: 1674:Shadow mapping 1671: 1666: 1661: 1660: 1659: 1654: 1649: 1644: 1639: 1634: 1629: 1619: 1614: 1609: 1604: 1599: 1594: 1588: 1586: 1582: 1581: 1579: 1578: 1573: 1568: 1567: 1566: 1556: 1549: 1544: 1539: 1538: 1537: 1527: 1522: 1517: 1512: 1507: 1501: 1496: 1490: 1485: 1479: 1477: 1471: 1470: 1467: 1466: 1464: 1463: 1458: 1453: 1448: 1443: 1437: 1435: 1426: 1425: 1420: 1415: 1409: 1407: 1401: 1400: 1398: 1397: 1392: 1386: 1384: 1378: 1377: 1370: 1369: 1362: 1355: 1347: 1341: 1340: 1335: 1330: 1325: 1320: 1314: 1303: 1302:External links 1300: 1297: 1296: 1274: 1244: 1219: 1194: 1173: 1157:|journal= 1130:Marco Corbetta 1120: 1096: 1066: 1057:|journal= 1024: 1015:|journal= 982: 973:|journal= 934: 927: 907: 898:|journal= 861: 860: 858: 855: 854: 853: 847: 839: 836: 835: 834: 828: 825:Photon mapping 822: 813: 805: 802: 801: 800: 797: 794: 791: 788: 783: 780: 779: 778: 772: 766: 760: 754: 748: 742: 736: 732:FSM "Forward" 730: 724: 718: 715: 709: 703: 695: 692: 691: 690: 684: 678: 672: 664: 661: 660: 659: 653: 647: 641: 635: 627: 624: 623: 622: 614: 611: 610: 609: 603: 597: 591: 583: 580: 579: 578: 572: 564: 561: 560: 559: 554: 551: 549: 546: 529: 526: 512: 511: 504: 501: 464: 461: 388: 387:Depth map test 385: 364: 358: 355: 353: 350: 348: 345: 343: 340: 339: 336: 333: 331: 328: 326: 323: 321: 318: 317: 314: 311: 309: 306: 304: 301: 299: 296: 295: 292: 289: 287: 284: 282: 279: 277: 274: 273: 271: 255:scale and bias 196: 193: 175: 172: 118: 115: 109: 106: 102:stencil buffer 98:shadow volumes 89: 86: 63:Lance Williams 47:Shadow mapping 26: 9: 6: 4: 3: 2: 1803: 1792: 1789: 1788: 1786: 1771: 1768: 1767: 1765: 1761: 1755: 1752: 1750: 1747: 1743: 1740: 1738: 1735: 1733: 1730: 1729: 1728: 1725: 1724: 1722: 1720: 1716: 1710: 1707: 1705: 1702: 1700: 1697: 1695: 1692: 1690: 1687: 1685: 1682: 1680: 1679:Shadow volume 1677: 1675: 1672: 1670: 1667: 1665: 1662: 1658: 1655: 1653: 1650: 1648: 1645: 1643: 1640: 1638: 1635: 1633: 1630: 1628: 1625: 1624: 1623: 1620: 1618: 1615: 1613: 1610: 1608: 1605: 1603: 1600: 1598: 1595: 1593: 1590: 1589: 1587: 1583: 1577: 1574: 1572: 1569: 1565: 1562: 1561: 1560: 1557: 1554: 1553:Triangle mesh 1550: 1548: 1545: 1543: 1540: 1536: 1533: 1532: 1531: 1528: 1526: 1523: 1521: 1518: 1516: 1513: 1511: 1508: 1505: 1502: 1500: 1497: 1495: 1491: 1489: 1486: 1484: 1483:3D projection 1481: 1480: 1478: 1476: 1472: 1462: 1459: 1457: 1454: 1452: 1449: 1447: 1444: 1442: 1439: 1438: 1436: 1434: 1430: 1424: 1423:Text-to-image 1421: 1419: 1416: 1414: 1411: 1410: 1408: 1406: 1402: 1396: 1393: 1391: 1388: 1387: 1385: 1383: 1379: 1375: 1368: 1363: 1361: 1356: 1354: 1349: 1348: 1345: 1339: 1336: 1334: 1331: 1329: 1326: 1324: 1321: 1318: 1315: 1313: 1309: 1306: 1305: 1285: 1281: 1277: 1271: 1267: 1263: 1259: 1255: 1248: 1233: 1229: 1223: 1208: 1204: 1198: 1184: 1177: 1169: 1162: 1149: 1135: 1131: 1124: 1110: 1106: 1100: 1085: 1081: 1077: 1070: 1062: 1049: 1035: 1028: 1020: 1007: 993: 986: 978: 965: 951: 944: 938: 930: 924: 921:. CRC Press. 920: 919: 911: 903: 890: 873: 866: 862: 851: 848: 845: 842: 841: 832: 829: 826: 823: 821: 817: 814: 811: 810:Shadow volume 808: 807: 798: 795: 792: 789: 786: 785: 782:Miscellaneous 777: 773: 771: 767: 765: 761: 759: 755: 753: 749: 747: 743: 741: 737: 735: 731: 729: 725: 723: 719: 716: 714: 710: 708: 704: 702: 698: 697: 689: 685: 683: 679: 677: 673: 671: 667: 666: 658: 654: 652: 648: 646: 642: 640: 636: 634: 630: 629: 621: 617: 616: 608: 604: 602: 598: 596: 592: 590: 586: 585: 577: 573: 571: 567: 566: 557: 556: 545: 543: 538: 535: 525: 523: 522: 517: 509: 505: 502: 499: 498: 492: 491: 490: 488: 487: 486:GL_ARB_shadow 481: 478: 469: 460: 458: 453: 450: 447: 442: 440: 436: 431: 429: 425: 421: 417: 412: 410: 406: 402: 393: 384: 382: 377: 362: 356: 351: 346: 341: 334: 329: 324: 319: 312: 307: 302: 297: 290: 285: 280: 275: 269: 259: 256: 252: 248: 244: 240: 236: 232: 231: 230:3D projection 225: 221: 216: 214: 210: 201: 192: 189: 185: 181: 171: 168: 162: 158: 156: 150: 148: 144: 140: 131: 123: 114: 105: 103: 99: 94: 85: 83: 79: 75: 71: 66: 64: 60: 57:are added to 56: 52: 48: 40: 32: 19: 1684:Shear matrix 1673: 1647:Path tracing 1632:Cone tracing 1627:Beam tracing 1547:Polygon mesh 1488:3D rendering 1287:. Retrieved 1257: 1247: 1235:. Retrieved 1231: 1222: 1210:. Retrieved 1206: 1197: 1186:. Retrieved 1176: 1148:cite journal 1137:. Retrieved 1123: 1112:. Retrieved 1099: 1088:. Retrieved 1084:the original 1079: 1069: 1048:cite journal 1037:. Retrieved 1027: 1006:cite journal 995:. Retrieved 985: 964:cite journal 953:. Retrieved 937: 917: 910: 889:cite journal 878:. Retrieved 865: 663:Soft Shadows 558:SSM "Simple" 542:soft shadows 539: 531: 520: 513: 494: 485: 482: 474: 454: 451: 443: 438: 434: 432: 427: 423: 419: 415: 413: 408: 404: 400: 398: 378: 260: 254: 246: 242: 238: 234: 233:) to become 227: 217: 206: 177: 163: 159: 151: 136: 111: 95: 91: 77: 67: 50: 46: 45: 1699:Translation 1652:Ray casting 1642:Ray tracing 1520:Cel shading 1494:Image-based 1475:3D graphics 1456:Ray casting 1405:2D graphics 1237:November 7, 1212:November 7, 820:ray tracing 816:Ray casting 726:DSM "Deep" 1763:Algorithms 1617:Reflection 1289:7 November 1275:159593295X 1188:2008-02-14 1139:2008-02-14 1114:2008-02-14 1090:2008-02-14 1080:GPU Gems 3 1039:2008-02-14 997:2008-02-14 955:2008-02-14 880:2020-12-22 857:References 518:extension 18:Shadow map 1742:rendering 1732:animation 1622:Rendering 831:Radiosity 626:Filtering 613:Smoothing 563:Splitting 457:projector 167:stitching 155:depth map 1785:Category 1737:modeling 1664:Rotation 1602:Clipping 1585:Concepts 1564:Deferred 1530:Lighting 1510:Aliasing 1504:Unbiased 1499:Spectral 1319:, nVidia 804:See also 694:Assorted 534:aliasing 433:If the ( 251:Direct3D 74:z-buffer 1791:Shading 1669:Scaling 1559:Shading 582:Warping 477:shaders 428:failure 414:If the 82:texture 55:shadows 1689:Shader 1461:Skybox 1446:Mode 7 1418:Layers 1312:nVidia 1284:538139 1282:  1272:  1109:NVidia 950:NVidia 925:  553:Simple 516:OpenGL 446:shader 381:shader 220:OpenGL 180:camera 145:), an 1709:Voxel 1694:Texel 1395:Pixel 1280:S2CID 946:(PDF) 875:(PDF) 444:In a 245:, or 78:depth 70:pixel 1433:2.5D 1291:2021 1270:ISBN 1239:2021 1214:2021 1168:link 1161:help 1061:help 1019:help 977:help 923:ISBN 902:help 495:see 403:and 228:see 1262:doi 335:0.5 330:0.5 313:0.5 303:0.5 291:0.5 276:0.5 143:Sun 76:or 49:or 1787:: 1310:, 1278:. 1268:. 1256:. 1230:. 1205:. 1152:: 1150:}} 1146:{{ 1132:. 1107:. 1078:. 1052:: 1050:}} 1046:{{ 1010:: 1008:}} 1004:{{ 968:: 966:}} 962:{{ 948:. 893:: 891:}} 887:{{ 241:, 188:2D 184:3D 84:. 1555:) 1551:( 1506:) 1492:( 1366:e 1359:t 1352:v 1264:: 1241:. 1216:. 1191:. 1170:) 1163:) 1159:( 1142:. 1117:. 1093:. 1063:) 1059:( 1042:. 1021:) 1017:( 1000:. 979:) 975:( 958:. 931:. 904:) 900:( 883:. 439:y 437:, 435:x 424:y 422:, 420:x 416:z 409:z 405:y 401:x 363:] 357:1 352:0 347:0 342:0 325:0 320:0 308:0 298:0 286:0 281:0 270:[ 247:z 243:y 239:x 20:)

Index

Shadow map


shadows
3D computer graphics
Lance Williams
pixel
z-buffer
texture
shadow volumes
stencil buffer


perspective projection
Sun
orthographic projection
depth map
stitching
camera
3D
2D

matrix multiplication
coordinate transformation
OpenGL
homogeneous coordinates
3D projection
Direct3D
shader

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.