diff options
Diffstat (limited to 'manuals/chickadee/Rendering-Engine.html')
-rw-r--r-- | manuals/chickadee/Rendering-Engine.html | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/manuals/chickadee/Rendering-Engine.html b/manuals/chickadee/Rendering-Engine.html new file mode 100644 index 0000000..b4514db --- /dev/null +++ b/manuals/chickadee/Rendering-Engine.html @@ -0,0 +1,183 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 2017 David Thompson davet@gnu.org + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled "GNU +Free Documentation License". + +A copy of the license is also available from the Free Software +Foundation Web site at http://www.gnu.org/licenses/fdl.html. + + +The document was typeset with +http://www.texinfo.org/ (GNU Texinfo). + --> +<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ --> +<head> +<title>The Chickadee Game Toolkit: Rendering Engine</title> + +<meta name="description" content="The Chickadee Game Toolkit: Rendering Engine"> +<meta name="keywords" content="The Chickadee Game Toolkit: Rendering Engine"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Index.html#Index" rel="index" title="Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Graphics.html#Graphics" rel="up" title="Graphics"> +<link href="Sprites.html#Sprites" rel="next" title="Sprites"> +<link href="Graphics.html#Graphics" rel="prev" title="Graphics"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smalllisp {margin-left: 3.2em} +kbd {font-style: oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nolinebreak {white-space: nowrap} +span.roman {font-family: initial; font-weight: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en"> +<a name="Rendering-Engine"></a> +<div class="header"> +<p> +Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Rendering-Engine-1"></a> +<h4 class="subsection">2.4.1 Rendering Engine</h4> + +<p>Chickadee defines rendering using a metaphor familiar to Scheme +programmers: procedure application. A shader (see <a href="Shaders.html#Shaders">Shaders</a>) is +like a procedure for the GPU to apply. Shaders are passed arguments: +A vertex array containing the geometry to render (see <a href="Vertex-Arrays.html#Vertex-Arrays">Vertex Arrays</a>) and zero or more keyword arguments that the shader +understands. Similar to how Scheme has <code>apply</code> for calling +procedures, Chickadee provides <code>gpu-apply</code> for calling shaders. +</p> +<p>Additionally, there is some dynamic state that effects how +<code>gpu-apply</code> will behave. Things like the current viewport, +framebuffer, and blend mode are stored as dynamic state because it +would be tedious to have to have to specify them each time +<code>gpu-apply</code> is called. +</p> +<p>The following procedures and syntax can be found in the +<code>(chickadee render)</code> module. +</p> +<dl> +<dt><a name="index-gpu_002dapply"></a>Scheme Syntax: <strong>gpu-apply</strong> <em><var>shader</var> <var>vertex-array</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> +<dt><a name="index-gpu_002dapply_002a"></a>Scheme Syntax: <strong>gpu-apply*</strong> <em><var>shader</var> <var>vertex-array</var> <var>count</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> +<dd> +<p>Render <var>vertex-array</var> using <var>shader</var> with the uniform values +specified in the following keyword arguments. +</p> +<p>While <code>gpu-apply</code> will draw every vertex in <var>vertex-array</var>, +<code>gpu-apply*</code> will only draw <var>count</var> vertices. +</p> +</dd></dl> + +<dl> +<dt><a name="index-current_002dviewport"></a>Scheme Procedure: <strong>current-viewport</strong></dt> +<dd><p>Return the currently bound viewport. See <a href="Viewports.html#Viewports">Viewports</a> for more +details about using viewports. +</p></dd></dl> + +<dl> +<dt><a name="index-current_002dframebuffer"></a>Scheme Procedure: <strong>current-framebuffer</strong></dt> +<dd><p>Return the currently bound framebuffer. See <a href="Framebuffers.html#Framebuffers">Framebuffers</a> for more +details about using framebuffers. +</p></dd></dl> + +<dl> +<dt><a name="index-current_002dblend_002dmode"></a>Scheme Procedure: <strong>current-blend-mode</strong></dt> +<dd><p>Return the currently bound blend mode. See <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing">Blending and Depth Testing</a> for more details about using blend modes. +</p></dd></dl> + +<dl> +<dt><a name="index-current_002ddepth_002dtest"></a>Scheme Procedure: <strong>current-depth-test</strong></dt> +<dd><p>Return <code>#t</code> if depth testing is currently enabled. +See <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing">Blending and Depth Testing</a> for more details about using the +depth test. +</p></dd></dl> + +<dl> +<dt><a name="index-current_002dtexture"></a>Scheme Procedure: <strong>current-texture</strong></dt> +<dd><p>Return the currently bound texture. See <a href="Textures.html#Textures">Textures</a> for more details +about using textures. +</p></dd></dl> + +<dl> +<dt><a name="index-current_002dprojection"></a>Scheme Procedure: <strong>current-projection</strong></dt> +<dd><p>Return the currently bound projection matrix. See <a href="Matrices.html#Matrices">Matrices</a> for +more details about matrices. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002dviewport"></a>Scheme Syntax: <strong>with-viewport</strong> <em><var>viewport</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the current viewport bound to <var>viewport</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002dframebuffer"></a>Scheme Syntax: <strong>with-framebuffer</strong> <em><var>framebuffer</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the current framebuffer bound to +<var>framebuffer</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002dblend_002dmode"></a>Scheme Syntax: <strong>with-blend-mode</strong> <em><var>blend-mode</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the current blend mode bound to +<var>blend-mode</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002ddepth_002dtest"></a>Scheme Syntax: <strong>with-depth-test</strong> <em><var>depth-test?</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the depth-test disabled if <var>depth-test?</var> +is <code>#f</code>, or enabled otherwise. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002dtexture"></a>Scheme Syntax: <strong>with-texture</strong> <em><var>texture</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the current texture bound to <var>texture</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-with_002dprojection"></a>Scheme Syntax: <strong>with-projection</strong> <em><var>projection</var> <var>body</var> ...</em></dt> +<dd><p>Evaluate <var>body</var> with the current projection matrix bound to +<var>projection</var>. +</p></dd></dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |