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
|
<!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: CastleSceneCore: record TManifoldEdge</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="TManifoldEdge"></a><h1 class="cio">record TManifoldEdge</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td>Hierarchy</td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td>Methods</td><td>Properties</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a href="CastleSceneCore.html">CastleSceneCore</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TManifoldEdge = record</code></p>
<h2 class="description">Description</h2>
<p>
Scene edge that is between exactly two triangles. It's used by <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ManifoldEdges">TCastleSceneCore.ManifoldEdges</a>, and this is crucial for rendering silhouette shadow volumes in OpenGL.</p>
<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="itemcode"><code><b><a href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a></b>: Cardinal;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleSceneCore.TManifoldEdge.html#Triangles">Triangles</a></b>: array [0..1] of Cardinal;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a href="CastleSceneCore.TManifoldEdge.html#V0">V0</a></b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleSceneCore.TManifoldEdge.html#V1">V1</a></b>: <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="itemcode"><a name="VertexIndex"></a><code><b>VertexIndex</b>: Cardinal;</code></td>
</tr>
<tr><td colspan="1">
<p>
Index to get vertexes of this edge. The actual edge's vertexes are not recorded here (this would prevent using <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a> with various scenes from the same animation). You should get them as the <code>VertexIndex</code> and (<code>VertexIndex</code>+1) mod 3 vertexes of the first triangle (i.e. Triangles[0]).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="Triangles"></a><code><b>Triangles</b>: array [0..1] of Cardinal;</code></td>
</tr>
<tr><td colspan="1">
<p>
Indexes to <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#TrianglesListShadowCasters">TCastleSceneCore.TrianglesListShadowCasters</a> array</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="V0"></a><code><b>V0</b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
These are vertexes at <a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a> and (<a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a>+1)mod 3 positions, but <i>only at generation of manifold edges time</i>. Like said in <a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a>, keeping here actual vertex info would prevent <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a>. However, using these when generating makes a great speed-up when generating manifold edges.
<p>Memory cost is acceptable: assume we have model with 10 000 faces, so 15 000 edges (assuming it's correctly closed manifold), so we waste 15 000 * 2 * SizeOf(<a class="normal" href="CastleVectors.html#TVector3Single">TVector3Single</a>) = 360 000 bytes... that's really nothing to worry (we waste much more on other things).
<p>Checked with "The Castle": indeed, this costs about 1 MB memory (out of 218 MB...), with really lot of creatures... On the other hand, this causes small speed-up when loading: loading creatures is about 5 seconds faster (18 with, 23 without this).
<p>So memory loss is small, speed gain is noticeable (but still small), implementation code is a little simplified, so I'm keeping this. Also, in the future, maybe it will be sensible to use this for actual shadow quad rendering, in cases when we know that <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a> was not used to make it.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="V1"></a><code><b>V1</b>: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
These are vertexes at <a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a> and (<a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a>+1)mod 3 positions, but <i>only at generation of manifold edges time</i>. Like said in <a class="normal" href="CastleSceneCore.TManifoldEdge.html#VertexIndex">VertexIndex</a>, keeping here actual vertex info would prevent <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a>. However, using these when generating makes a great speed-up when generating manifold edges.
<p>Memory cost is acceptable: assume we have model with 10 000 faces, so 15 000 edges (assuming it's correctly closed manifold), so we waste 15 000 * 2 * SizeOf(<a class="normal" href="CastleVectors.html#TVector3Single">TVector3Single</a>) = 360 000 bytes... that's really nothing to worry (we waste much more on other things).
<p>Checked with "The Castle": indeed, this costs about 1 MB memory (out of 218 MB...), with really lot of creatures... On the other hand, this causes small speed-up when loading: loading creatures is about 5 seconds faster (18 with, 23 without this).
<p>So memory loss is small, speed gain is noticeable (but still small), implementation code is a little simplified, so I'm keeping this. Also, in the future, maybe it will be sensible to use this for actual shadow quad rendering, in cases when we know that <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a> was not used to make it.</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:11</em>
</span>
</td></tr></table></body></html>
|