1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML>
3<HEAD>
4<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
5<META name="GENERATOR" content="Microsoft FrontPage 5.0">
6<META http-equiv="Content-Style-Type" content="text/css">
7<LINK rel="stylesheet" type="text/css" href="../../../CSS/revolution.css">
8<TITLE>tev-complex</TITLE>
9</HEAD>
10<BODY>
11<H1 align="left">tev-complex</H1>
12
13<H2>Description</H2>
14<P>This program is an example of multitexture processing that uses complex TEV settings. A torus is displayed using textures like material texture, bump, reflection, and diffusion map. Two color channels are also used. (One for diffuse and one for specular usage.)</P>
15
16<H2>Coverage</H2>
17<TABLE border="1" cellpadding="3" cellspacing="0.1" width="640">
18  <TBODY>
19    <TR>
20<TD width="30%" bgcolor="#C0C0C0"><EM><STRONG>Functions</STRONG></EM></TD>
21<TD width="25%" bgcolor="#C0C0C0"><EM><STRONG>Parameters</STRONG></EM></TD>
22<TD width="45%" bgcolor="#C0C0C0"><EM><STRONG>Description</STRONG></EM></TD>
23    </TR>
24    <TR>
25<TD width="30%" rowspan="5"><A href="../../../gx/Texture/GXInitTexObj.html"><CODE>GXInitTexObj</CODE></A></TD>
26<TD width="25%"><SPAN class="argument">Pointer to image data.</SPAN></TD>
27<TD width="45%">Appropriate value.</TD>
28    </TR>
29    <TR>
30<TD width="25%"><SPAN class="argument">Width and height</SPAN></TD>
31<TD width="45%">Appropriate value.</TD>
32    </TR>
33    <TR>
34<TD width="25%"><SPAN class="argument">format</SPAN></TD>
35<TD width="45%">Appropriate value.</TD>
36    </TR>
37    <TR>
38<TD width="25%"><SPAN class="argument">Wrap mode (s, t).</SPAN></TD>
39<TD width="45%">Appropriate value.</TD>
40    </TR>
41    <TR>
42<TD width="25%"><SPAN class="argument">Mipmap</SPAN></TD>
43<TD width="45%"><CODE>GX_FALSE</CODE></TD>
44    </TR>
45    <TR>
46<TD width="30%"><A href="../../../gx/Texture/GXLoadTexObj.html"><CODE><CODE>GXLoadTexObj</CODE></CODE></A></TD>
47<TD width="25%"><SPAN class="argument">Destination texture name</SPAN></TD>
48<TD width="45%"><CODE>GX_TEXMAP0</CODE> - <CODE>GX_TEXMAP3</CODE></TD>
49    </TR>
50    <TR>
51<TD width="30%"><A href="../../../gx/Lighting/GXSetNumChans.html"><CODE>GXSetNumChans</CODE></A></TD>
52<TD width="25%"><SPAN class="argument">Number of color channels.</SPAN></TD>
53      <TD width="45%">2</TD>
54    </TR>
55    <TR>
56<TD width="30%" rowspan="7"><A href="../../../gx/Lighting/GXSetChanCtrl.html"><CODE><CODE>GXSetChanCtrl</CODE></CODE></A></TD>
57<TD width="25%"><SPAN class="argument">Channel ID</SPAN></TD>
58<TD width="45%"><CODE>GX_COLOR0A0</CODE>, <CODE>GX_COLOR1A1</CODE>.</TD>
59    </TR>
60    <TR>
61<TD width="25%"><SPAN class="argument">Channel enable</SPAN></TD>
62<TD width="45%">Always <CODE>GX_ENABLE</CODE>.</TD>
63    </TR>
64    <TR>
65<TD width="25%"><SPAN class="argument">Ambient color source</SPAN></TD>
66<TD width="45%">Always <CODE>GX_SRC_REG</CODE>.</TD>
67    </TR>
68    <TR>
69<TD width="25%"><SPAN class="argument">Material color source</SPAN></TD>
70<TD width="45%">Always <CODE>GX_SRC_REG</CODE>.</TD>
71    </TR>
72    <TR>
73<TD width="25%"><SPAN class="argument">Light mask</SPAN></TD>
74<TD width="45%"><CODE>GX_LIGHT0</CODE> (for channel 0)<BR> <CODE>GX_LIGHT1</CODE> (for channel 1)</TD>
75    </TR>
76    <TR>
77<TD width="25%"><SPAN class="argument">Diffusion function</SPAN></TD>
78<TD width="45%"><CODE>GX_DF_CLAMP</CODE> (for channel 0)<BR> <CODE>GX_DF_NONE</CODE> (for channel 1)</TD>
79    </TR>
80    <TR>
81<TD width="25%"><SPAN class="argument">Attenuation function</SPAN></TD>
82<TD width="45%"><CODE>GX_AF_NONE</CODE> (for channel 0)<BR> <CODE>GX_AF_SPEC</CODE> (for channel 1)</TD>
83    </TR>
84    <TR>
85<TD width="30%"><A href="../../../gx/TexCoordGen/GXSetNumTexGens.html"><CODE>GXSetNumTexGens</CODE></A></TD>
86<TD width="25%"><SPAN class="argument">number of texture coordinates.</SPAN></TD>
87      <TD width="45%">5</TD>
88    </TR>
89    <TR>
90<TD width="30%" rowspan="4"><CODE><A href="../../../gx/TexCoordGen/GXSetTexCoordGen.html">GXSetTexCoordGen</A></CODE></TD>
91<TD width="25%"><SPAN class="argument">Texture coordinate ID</SPAN></TD>
92<TD width="45%"><CODE>GX_TEXCOORD0</CODE> - <CODE>GX_TEXCOORD4</CODE></TD>
93    </TR>
94    <TR>
95<TD width="25%"><SPAN class="argument">Type of texture coordinate generation</SPAN></TD>
96<TD width="45%"><CODE>GX_TG_MTX2x4</CODE>, <CODE>GX_TG_BUMP0</CODE></TD>
97    </TR>
98    <TR>
99<TD width="25%"><SPAN class="argument">Source parameter of texture coordinate generation.</SPAN></TD>
100<TD width="45%"><CODE>GX_TG_TEX0</CODE>, <CODE>GX_TG_NRM</CODE>, <CODE>GX_TG_TEXCOORD1</CODE></TD>
101    </TR>
102    <TR>
103<TD width="25%"><SPAN class="argument">Matrix index</SPAN></TD>
104<TD width="45%">Appropriate matrix index.</TD>
105    </TR>
106    <TR>
107<TD width="30%"><A href="../../../gx/Tev/GXSetNumTevStages.html"><CODE>GXSetNumTevStages</CODE></A></TD>
108<TD width="25%"><SPAN class="argument">Number of TEV Stages</SPAN></TD>
109      <TD width="45%">5</TD>
110    </TR>
111    <TR>
112<TD width="30%" rowspan="2"><A href="../../../gx/Tev/GXSetTevColor.html"><CODE><CODE>GXSetTevColor</CODE></CODE></A></TD>
113<TD width="25%"><SPAN class="argument">Output color register ID</SPAN></TD>
114<TD width="45%"><CODE>GX_TEVREG0</CODE> - <CODE>GX_TEVREG2</CODE></TD>
115    </TR>
116    <TR>
117<TD width="25%"><SPAN class="argument">Color</SPAN></TD>
118<TD width="45%">Appropriate value.</TD>
119    </TR>
120    <TR>
121<TD width="30%" rowspan="2"><A href="../../../gx/Tev/GXSetTevColorIn.html"><CODE><CODE>GXSetTevColorIn</CODE></CODE></A></TD>
122<TD width="25%"><SPAN class="argument">TEV stage ID.</SPAN></TD>
123<TD width="45%"><CODE>GX_TEVSTAGE0</CODE> - <CODE>GX_TEVSTAGE4</CODE></TD>
124    </TR>
125    <TR>
126<TD width="25%"><SPAN class="argument">Input variable A/B/C/D.</SPAN></TD>
127<TD width="45%">Appropriate value (use fixed value).</TD>
128    </TR>
129    <TR>
130<TD width="30%" rowspan="4"><A href="../../../gx/Tev/GXSetTevColorOp.html"><CODE><CODE>GXSetTevColorOp</CODE></CODE></A></TD>
131<TD width="25%"><SPAN class="argument">TEV stage ID.</SPAN></TD>
132<TD width="45%"><CODE>GX_TEVSTAGE0</CODE> - <CODE>GX_TEVSTAGE4</CODE></TD>
133    </TR>
134    <TR>
135<TD width="25%"><SPAN class="argument">Operator/bias/scale.</SPAN></TD>
136<TD width="45%">Appropriate value (use fixed value).</TD>
137    </TR>
138    <TR>
139<TD width="25%"><SPAN class="argument">Clamp</SPAN></TD>
140<TD width="45%"><CODE>GX_FALSE</CODE></TD>
141    </TR>
142    <TR>
143<TD width="25%"><SPAN class="argument">Output register ID</SPAN></TD>
144<TD width="45%"><CODE>GX_TEVREG2</CODE>, <CODE>GX_TEVPREV</CODE></TD>
145    </TR>
146    <TR>
147<TD width="30%" rowspan="2"><A href="../../../gx/Tev/GXSetTevAlphaIn.html"><CODE><CODE>GXSetTevAlphaIn</CODE></CODE></A></TD>
148<TD width="25%"><SPAN class="argument">TEV stage ID.</SPAN></TD>
149<TD width="45%"><CODE>GX_TEVSTAGE0</CODE> - <CODE>GX_TEVSTAGE4</CODE></TD>
150    </TR>
151    <TR>
152<TD width="25%"><SPAN class="argument">Input variable A/B/C/D.</SPAN></TD>
153<TD width="45%">Appropriate value (use fixed value).</TD>
154    </TR>
155    <TR>
156<TD width="30%" rowspan="4"><A href="../../../gx/Tev/GXSetTevAlphaOp.html"><CODE>GXSetTevAlphaOp</CODE></A></TD>
157<TD width="25%"><SPAN class="argument">TEV stage ID.</SPAN></TD>
158<TD width="45%"><CODE>GX_TEVSTAGE0</CODE> - <CODE>GX_TEVSTAGE4</CODE></TD>
159    </TR>
160    <TR>
161<TD width="25%"><SPAN class="argument">Operator/bias/scale.</SPAN></TD>
162<TD width="45%">Appropriate value (use fixed value).</TD>
163    </TR>
164    <TR>
165<TD width="25%"><SPAN class="argument">Clamp</SPAN></TD>
166<TD width="45%"><CODE>GX_FALSE</CODE></TD>
167    </TR>
168    <TR>
169<TD width="25%"><SPAN class="argument">Output register ID.</SPAN></TD>
170<TD width="45%"><CODE>GX_TEVREG2</CODE>, <CODE>GX_TEVPREV</CODE></TD>
171    </TR>
172    <TR>
173<TD width="30%" rowspan="4"><A href="../../../gx/Tev/GXSetTevOrder.html"><CODE>GXSetTevOrder</CODE></A></TD>
174<TD width="25%"><SPAN class="argument">TEV stage ID.</SPAN></TD>
175<TD width="45%"><CODE>GX_TEVSTAGE0</CODE> - <CODE>GX_TEVSTAGE4</CODE></TD>
176    </TR>
177    <TR>
178<TD width="25%"><SPAN class="argument">Texture coordinate ID.</SPAN></TD>
179<TD width="45%"><CODE>GX_TEXCOORD0</CODE> - <CODE>GX_TEXCOORD4</CODE></TD>
180    </TR>
181    <TR>
182<TD width="25%"><SPAN class="argument">Texture map ID.</SPAN></TD>
183<TD width="45%"><CODE>GX_TEXMAP0</CODE> - <CODE>GX_TEXMAP3</CODE></TD>
184    </TR>
185    <TR>
186<TD width="25%"><SPAN class="argument">Color channel ID.</SPAN></TD>
187<TD width="45%"><CODE>GX_COLOR0A0</CODE>, <CODE>GX_COLOR1A1</CODE></TD>
188    </TR>
189  </TBODY>
190</TABLE>
191
192<H2>Using the Demo</H2>
193<P>End the test with START.</P>
194<P>Rotate the model with the Control Stick.</P>
195<P>Move the light location that is centered at the model with the C Stick.</P>
196
197<H2>Snapshot</H2>
198<P><IMG src="./images/tev-complex-0.jpg" alt="tev-complex-0.jpg (26520 bytes)" width="640" height="480"></P>
199
200<H2>Algorithm Details</H2>
201<P>This multitexture effect uses 2 color channels, 4 textures, and 5 TEV stages.</P>
202<TABLE border="0" cellspacing="0" cellpadding="0" width="640">
203  <TBODY>
204    <TR>
205<TD width="20%">Color channel 0.</TD>
206<TD width="80%">Diffuse light color (Cd).</TD>
207    </TR>
208    <TR>
209<TD width="20%">Color channel 1.</TD>
210<TD width="80%">Specular light color (Cs).</TD>
211    </TR>
212    <TR>
213<TD width="20%">Texture map 0.</TD>
214<TD width="80%">Bump texture (Tb).</TD>
215    </TR>
216    <TR>
217<TD width="20%">Texture map 1.</TD>
218<TD width="80%">Base material texture (Tm).</TD>
219    </TR>
220    <TR>
221<TD width="20%">Texture map 2.</TD>
222<TD width="80%">Reflection map (Tr).</TD>
223    </TR>
224    <TR>
225<TD width="20%">Texture map 3.</TD>
226<TD width="80%">Gloss map (Tg) : actually (1-Tg) is used in the specular calculation.</TD>
227    </TR>
228    <TR>
229<TD width="20%">TEV stage 0.</TD>
230<TD width="80%">Rprev = Cd + Sb * Tb</TD>
231    </TR>
232    <TR>
233<TD width="20%">TEV stage 1</TD>
234<TD width="80%">Rprev = Rprev - Sb * Tb (Perturbation for embossing)</TD>
235    </TR>
236    <TR>
237<TD width="20%">TEV stage 2</TD>
238<TD width="80%">Reg2 = Rprev * Tm</TD>
239    </TR>
240    <TR>
241<TD width="20%">TEV stage 3</TD>
242<TD width="80%">Rprev = Cs + Sr * Tr</TD>
243    </TR>
244    <TR>
245<TD width="20%">TEV stage 4</TD>
246<TD width="80%">Rprev (final output) = Tg * Reg2 + (1 - Tg) Rprev</TD>
247    </TR>
248  </TBODY>
249</TABLE>
250<P>(Sb and Sr are scale constants stored in TEV register 0 and 1.)</P>
251
252<H2>Required Data Files</H2>
253<P><CODE>$REVOLUTION_SDK_ROOT/dvddata/gxTests/tev-03.tpl</CODE></P>
254
255<H2>Revision History</H2>
256<P>
2572008/05/12 Corrected the old function name, <CODE>GXSetTevStages</CODE>, to the new name, <CODE>GXSetNumTevStages</CODE>.<br><br> 2006/03/01 Initial version.<br><br>
258</P>
259
260<hr><p>CONFIDENTIAL</p></body>
261</HTML>