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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
|
<!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: X3DNodes: Object TLightInstance</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">
<a name="TLightInstance"></a><h1 class="cio">Object TLightInstance</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a href="X3DNodes.html">X3DNodes</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TLightInstance = object(TObject)</code></p>
<h2 class="description">Description</h2>
<p>
Light source instance in the scene. References VRML/X3D light source node (see <a class="normal" href="X3DNodes.TLightInstance.html#Node">Node</a>), and keeps track of light source transformation in the 3D world. For the sake of speed also stores a couple of light's properties already multiplied by the transformation.
<p>This record may be initialized only by <a class="normal" href="X3DNodes.TAbstractLightNode.html#CreateLightInstance">TAbstractLightNode.CreateLightInstance</a>. Update it (when transform changes) by <a class="normal" href="X3DNodes.TAbstractLightNode.html#UpdateLightInstance">TAbstractLightNode.UpdateLightInstance</a>.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TObject</li>
<li class="thisitem">TLightInstance</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Fields"></a><h3 class="summary">Fields</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#Node">Node</a></b>: <a href="X3DNodes.TAbstractLightNode.html">TAbstractLightNode</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#Transform">Transform</a></b>: <a href="CastleVectors.html#TMatrix4Single">TMatrix4Single</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#TransformScale">TransformScale</a></b>: Single;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#Location">Location</a></b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#Direction">Direction</a></b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#Radius">Radius</a></b>: Single;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="X3DNodes.TLightInstance.html#WorldCoordinates">WorldCoordinates</a></b>: boolean;</code></td>
</tr>
</table>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a href="X3DNodes.TLightInstance.html#Position">Position</a></b>: <a href="CastleVectors.html#TVector4Single">TVector4Single</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a href="X3DNodes.TLightInstance.html#Contribution">Contribution</a></b>( const Point: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const PointPlaneNormal: <a href="CastleVectors.html#TVector4Single">TVector4Single</a>; State: <a href="X3DNodes.TX3DGraphTraverseState.html">TX3DGraphTraverseState</a>; const CamPosition: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a href="X3DNodes.TLightInstance.html#ContributionCameraIndependent">ContributionCameraIndependent</a></b>( const Point, PointPlaneNormal, MaterialDiffuseColor: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Fields</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Node"></a><code><b>Node</b>: <a href="X3DNodes.TAbstractLightNode.html">TAbstractLightNode</a>;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Transform"></a><code><b>Transform</b>: <a href="CastleVectors.html#TMatrix4Single">TMatrix4Single</a>;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TransformScale"></a><code><b>TransformScale</b>: Single;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Location"></a><code><b>Location</b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Light location, already transformed by the <a class="normal" href="X3DNodes.TLightInstance.html#Transform">Transform</a> matrix. For <a class="normal" href="X3DNodes.TAbstractPositionalLightNode.html">TAbstractPositionalLightNode</a> lights.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Direction"></a><code><b>Direction</b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Light direction, already normalized and transformed by the <a class="normal" href="X3DNodes.TLightInstance.html#Transform">Transform</a> matrix. For spot and directional lights.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Radius"></a><code><b>Radius</b>: Single;</code></td>
</tr>
<tr><td colspan="2">
<p>
Light radius, already transformed by the <a class="normal" href="X3DNodes.TLightInstance.html#Transform">Transform</a> matrix. For lights with radius (positional lights in VRML >= 2.0, that is <a class="normal" href="X3DNodes.TAbstractPositionalLightNode.html">TAbstractPositionalLightNode</a> with HasRadius = true).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="WorldCoordinates"></a><code><b>WorldCoordinates</b>: boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Are light location, direction (in this class and inside Node fields) expressed in world coordinates. If not, they are expressed in scene coordinates.
<p>This matters if you render the scene using <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a>, and transform it by <a class="normal" href="Castle3D.T3DTransform.html">T3DTransform</a> or direct OpenGL modelview changes. By default (<code>WorldCoordinates</code> = false) we assume that light is defined in scene space, so it will be transformed by the whole modelview matrix (camera matrix with scene transformations). When this is true, during rendering we take care to transform this light only by camera matrix (not additional scene transformation). Useful for example for headlight.</p>
</td></tr>
</table>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Position"></a><code>function <b>Position</b>: <a href="CastleVectors.html#TVector4Single">TVector4Single</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Position expressed in homogeneous coordinates. For positional lights, the last component is always 1. For directional lights, the last component is always 0.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Contribution"></a><code>function <b>Contribution</b>( const Point: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const PointPlaneNormal: <a href="CastleVectors.html#TVector4Single">TVector4Single</a>; State: <a href="X3DNodes.TX3DGraphTraverseState.html">TX3DGraphTraverseState</a>; const CamPosition: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Light contribution to the specified vertex color. This can be used by software renderers (ray-tracers etc.) to calculate pixel color following VRML/X3D specifications. <a class="normal" href="X3DNodes.TX3DGraphTraverseState.html#Emission">TX3DGraphTraverseState.Emission</a> should be added to <code>TLightInstance.Contribution</code> (for each light), and resulting color should be processed by <a class="normal" href="X3DNodes.TFogNode.html#ApplyFog">TFogNode.ApplyFog</a>.
<p>We do not clamp color components to (0, 1). This would be a waste of time, you should clamp only at the end (or never). This also allows to multiply / accumulate values outside of the (0, 1) range during calculations. OpenGL also clamps only at the end.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ContributionCameraIndependent"></a><code>function <b>ContributionCameraIndependent</b>( const Point, PointPlaneNormal, MaterialDiffuseColor: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Light contribution, without knowing the camera or full material. We have a 3D vertex, we know it lies on a plane with given normal, and we have light information. Try to calculate VRML/X3D lighting equation as close as possible to the fully correct version (see regular <a class="normal" href="X3DNodes.TLightInstance.html#Contribution">Contribution</a> method) with this information.
<p>The specular lighting part must be simply ignored in this case.</p>
</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&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:14</em>
</span>
</td></tr></table></body></html>
|