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>