File: X3DShadowMaps.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (125 lines) | stat: -rw-r--r-- 7,270 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: X3DShadowMaps</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit X3DShadowMaps</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td>Classes, Interfaces, Objects and Records</td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td><a class="section" href="#PasDoc-Constants">Constants</a></td><td>Variables</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
Shadow maps internal utilities.</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li><a  href="X3DNodes.html">X3DNodes</a></li><li><a  href="CastleShapes.html">CastleShapes</a></li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code>procedure <b><a  href="X3DShadowMaps.html#ProcessShadowMapsReceivers">ProcessShadowMapsReceivers</a></b>(Model: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; Shapes: <a  href="CastleShapes.TShapeTree.html">TShapeTree</a>; const Enable: boolean; const DefaultShadowMapSize: Cardinal);</code></td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a  href="X3DShadowMaps.html#TShadowSampling">TShadowSampling</a></b> = (...);</code></td>
</tr>
</table>
<a name="PasDoc-Constants"></a><h3 class="summary">Constants</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a  href="X3DShadowMaps.html#ShadowSamplingNames">ShadowSamplingNames</a></b>: array [<a  href="X3DShadowMaps.html#TShadowSampling">TShadowSampling</a>] of string =
  ( 'Simple', 'PCF 4', 'PCF 4 Bilinear', 'PCF 16', 'Variance Shadow Maps (Experimental)' );</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="X3DShadowMaps.html#DefaultShadowSampling">DefaultShadowSampling</a></b> = ssPCF16;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Functions and Procedures</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessShadowMapsReceivers"></a><code>procedure <b>ProcessShadowMapsReceivers</b>(Model: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; Shapes: <a  href="CastleShapes.TShapeTree.html">TShapeTree</a>; const Enable: boolean; const DefaultShadowMapSize: Cardinal);</code></td>
</tr>
<tr><td colspan="1">
<p>
Automatically handle VRML/X3D &quot;receiveShadows&quot; field by inserting appropriate lower-level nodes.

<p>If Enable is <code>True</code>, the appropriate lower-level nodes are added, or replaced (if they already existed, because you call <code>ProcessShadowMapsReceivers</code> again). If Enable is <code>False</code>, the appropriate nodes (added by previous calls to <code>ProcessShadowMapsReceivers</code>) will be removed instead.

<p>For each shape with &quot;receiveShadows&quot;, we: </p>

<ol class="paragraph_spacing">
  <li value="1"><p>extend it's &quot;texture&quot; field with appropriate GeneratedShadowMap,</p></li>
  <li value="2"><p>extend it's &quot;texCoord&quot; field with appropriate ProjectedTextureCoordinate,</p></li>
</ol>

<p></p>
</td></tr>
</table>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TShadowSampling"></a><code><b>TShadowSampling</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
&nbsp;<h6 class="description_section">Values</h6>
<ul>
<li>
ssSimple: &nbsp;</li>
<li>
ssPCF4: Percentage Closer Filtering improve shadow maps look, by sampling the depth map a couple of times. They also make shadow more blurry (increase shadow map size to counteract this), and a little slower. They may also introduce new artifacts (due to bad interaction with the &quot;polygon offset&quot; of shadow map).</li>
<li>
ssPCF4Bilinear: &nbsp;</li>
<li>
ssPCF16: &nbsp;</li>
<li>
ssVarianceShadowMaps: Variance Shadow Maps, see <a  href="http://www.punkuser.net/vsm/">http://www.punkuser.net/vsm/</a> . This may generally produce superior results, as shadow maps can be then filtered like normal textures (bilinear, mipmaps, anisotropic filtering). So shadows look much nicer from very close and very far distances. However, this requires new GPU, and may cause artifacts on some scenes.</li>
</ul>
</td></tr>
</table>
<h3 class="detail">Constants</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ShadowSamplingNames"></a><code><b>ShadowSamplingNames</b>: array [<a  href="X3DShadowMaps.html#TShadowSampling">TShadowSampling</a>] of string =
  ( 'Simple', 'PCF 4', 'PCF 4 Bilinear', 'PCF 16', 'Variance Shadow Maps (Experimental)' );</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="DefaultShadowSampling"></a><code><b>DefaultShadowSampling</b> = ssPCF16;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);

  (function() {
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
    _paq.push(["setSiteId", "1"]);
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->

<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&amp;rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a  href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:18</em>
</span>
</td></tr></table></body></html>