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