rastpos.c revision 86b842790b720cd6b1499ce8edca8a4e9c8dc029
186b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul/* $Id: rastpos.c,v 1.33 2001/12/14 02:50:02 brianp Exp $ */ 2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 3afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa 3-D graphics library 5b1394fa92aaaf859ce9efc8b5fc194397921320cBrian Paul * Version: 3.5 65e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 7b6bcae5698df88f7730d40004ce7ce0462e97a20Brian Paul * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. 85e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Permission is hereby granted, free of charge, to any person obtaining a 10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * copy of this software and associated documentation files (the "Software"), 11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * to deal in the Software without restriction, including without limitation 12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * and/or sell copies of the Software, and to permit persons to whom the 14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Software is furnished to do so, subject to the following conditions: 155e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * The above copyright notice and this permission notice shall be included 17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * in all copies or substantial portions of the Software. 185e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * 19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 26afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 27afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 28afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifdef PC_HEADER 29afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "all.h" 30afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#else 31fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#include "glheader.h" 32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "clip.h" 33c893a015d8a50a38cd3f727d99835e7e7e2ccea9Brian Paul#include "colormac.h" 34485f04074151686fa24d40e3eeb83029d3d8c425Keith Whitwell#include "context.h" 35afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "feedback.h" 36afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "light.h" 37afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "macros.h" 38afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "mmath.h" 39485f04074151686fa24d40e3eeb83029d3d8c425Keith Whitwell#include "rastpos.h" 40ea39f042c378c234b573ceead4c5194020d949c4Brian Paul#include "state.h" 4123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "simple_list.h" 425e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen#include "mtypes.h" 4323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 4423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "math/m_matrix.h" 4523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell#include "math/m_xform.h" 46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif 47afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 48afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 49afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 5023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Clip a point against the view volume. 5123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Input: v - vertex-vector describing the point to clip 5223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Return: 0 = outside view volume 5323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * 1 = inside view volume 5423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */ 553b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulstatic GLuint 563b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulviewclip_point( const GLfloat v[] ) 5723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{ 5823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if ( v[0] > v[3] || v[0] < -v[3] 5923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell || v[1] > v[3] || v[1] < -v[3] 6023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell || v[2] > v[3] || v[2] < -v[3] ) { 6123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell return 0; 6223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 6323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell else { 6423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell return 1; 6523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 6623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell} 6723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 683b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul 698c2f6c5059a60d845716277973c826f4069926e6Brian Paul/* As above, but only clip test against far/near Z planes */ 708c2f6c5059a60d845716277973c826f4069926e6Brian Paulstatic GLuint 718c2f6c5059a60d845716277973c826f4069926e6Brian Paulviewclip_point_z( const GLfloat v[] ) 728c2f6c5059a60d845716277973c826f4069926e6Brian Paul{ 738c2f6c5059a60d845716277973c826f4069926e6Brian Paul if (v[2] > v[3] || v[2] < -v[3] ) { 748c2f6c5059a60d845716277973c826f4069926e6Brian Paul return 0; 758c2f6c5059a60d845716277973c826f4069926e6Brian Paul } 768c2f6c5059a60d845716277973c826f4069926e6Brian Paul else { 778c2f6c5059a60d845716277973c826f4069926e6Brian Paul return 1; 788c2f6c5059a60d845716277973c826f4069926e6Brian Paul } 798c2f6c5059a60d845716277973c826f4069926e6Brian Paul} 808c2f6c5059a60d845716277973c826f4069926e6Brian Paul 818c2f6c5059a60d845716277973c826f4069926e6Brian Paul 828c2f6c5059a60d845716277973c826f4069926e6Brian Paul 8323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* 8423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Clip a point against the user clipping planes. 8523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Input: v - vertex-vector describing the point to clip. 8623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * Return: 0 = point was clipped 8723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * 1 = point not clipped 8823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */ 893b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulstatic GLuint 903b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Pauluserclip_point( GLcontext* ctx, const GLfloat v[] ) 9123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{ 9223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLuint p; 9323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 94a864432fb4333dfbbe669554de7485d8426e1c38Brian Paul for (p = 0; p < ctx->Const.MaxClipPlanes; p++) { 9523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (ctx->Transform.ClipEnabled[p]) { 9623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat dot = v[0] * ctx->Transform._ClipUserPlane[p][0] 9723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + v[1] * ctx->Transform._ClipUserPlane[p][1] 9823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + v[2] * ctx->Transform._ClipUserPlane[p][2] 9923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + v[3] * ctx->Transform._ClipUserPlane[p][3]; 10023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (dot < 0.0F) { 10123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell return 0; 10223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 10323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 10423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 10523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 10623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell return 1; 10723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell} 10823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 10923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 11023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* This has been split off to allow the normal shade routines to 1115e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * get a little closer to the vertex buffer, and to use the 11223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell * GLvector objects directly. 113acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * Input: ctx - the context 114acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * vertex - vertex location 115acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * normal - normal vector 116acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * Output: Rcolor - returned color 117acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * Rspec - returned specular color (if separate specular enabled) 118acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul * Rindex - returned color index 11923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell */ 1203b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulstatic void 1213b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulshade_rastpos(GLcontext *ctx, 1223b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul const GLfloat vertex[4], 1233b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul const GLfloat normal[3], 1243b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul GLfloat Rcolor[4], 125acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul GLfloat Rspec[4], 126acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul GLuint *Rindex) 12723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell{ 12823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat (*base)[3] = ctx->Light._BaseColor; 12923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell struct gl_light *light; 130acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul GLfloat diffuseColor[4], specularColor[4]; 13123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat diffuse = 0, specular = 0; 13223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 133ac541734146071e279a8c379bce98f40195069e5Brian Paul if (!ctx->_ShineTable[0] || !ctx->_ShineTable[1]) 134ac541734146071e279a8c379bce98f40195069e5Brian Paul _mesa_validate_all_lighting_tables( ctx ); 135ac541734146071e279a8c379bce98f40195069e5Brian Paul 136acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul COPY_3V(diffuseColor, base[0]); 1377b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz diffuseColor[3] = CLAMP( ctx->Light.Material[0].Diffuse[3], 0.0F, 1.0F ); 138acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ASSIGN_4V(specularColor, 0.0, 0.0, 0.0, 0.0); 13923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 14023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell foreach (light, &ctx->Light.EnabledList) { 14123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat n_dot_h; 14223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat attenuation = 1.0; 1435e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen GLfloat VP[3]; 14423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat n_dot_VP; 14523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat *h; 146acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul GLfloat diffuseContrib[3], specularContrib[3]; 14723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLboolean normalized; 14823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 14923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (!(light->_Flags & LIGHT_POSITIONAL)) { 15023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell COPY_3V(VP, light->_VP_inf_norm); 15123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell attenuation = light->_VP_inf_spot_attenuation; 15223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 15323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell else { 1545e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen GLfloat d; 15522144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 15623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell SUB_3V(VP, light->_Position, vertex); 1577b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz d = (GLfloat) LEN_3FV( VP ); 15822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 15923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if ( d > 1e-6) { 16023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat invd = 1.0F / d; 16123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell SELF_SCALE_SCALAR_3V(VP, invd); 16223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 1635e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen attenuation = 1.0F / (light->ConstantAttenuation + d * 1645e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen (light->LinearAttenuation + d * 16523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell light->QuadraticAttenuation)); 16622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 1673b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul if (light->_Flags & LIGHT_SPOT) { 16823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat PV_dot_dir = - DOT3(VP, light->_NormDirection); 16922144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 17023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (PV_dot_dir<light->_CosCutoff) { 1715e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen continue; 17223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 1733b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul else { 17423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell double x = PV_dot_dir * (EXP_TABLE_SIZE-1); 17523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell int k = (int) x; 17623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat spot = (GLfloat) (light->_SpotExpTable[k][0] 17723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + (x-k)*light->_SpotExpTable[k][1]); 17823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell attenuation *= spot; 17923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 18023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 18123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 18223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 1835e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen if (attenuation < 1e-3) 18423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell continue; 18523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 18623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell n_dot_VP = DOT3( normal, VP ); 18723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 18823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (n_dot_VP < 0.0F) { 189acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V(diffuseColor, attenuation, light->_MatAmbient[0]); 19023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell continue; 1915e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen } 19223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 193acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul COPY_3V(diffuseContrib, light->_MatAmbient[0]); 194acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V(diffuseContrib, n_dot_VP, light->_MatDiffuse[0]); 19523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell diffuse += n_dot_VP * light->_dli * attenuation; 196acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ASSIGN_3V(specularContrib, 0.0, 0.0, 0.0); 19723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 198ad2ac216fa0cbebc36530bf9e5256e902710b892Keith Whitwell { 19923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (ctx->Light.Model.LocalViewer) { 20023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat v[3]; 20123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell COPY_3V(v, vertex); 20223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell NORMALIZE_3FV(v); 20323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell SUB_3V(VP, VP, v); 20423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell h = VP; 20523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell normalized = 0; 20623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 20723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell else if (light->_Flags & LIGHT_POSITIONAL) { 20823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell h = VP; 20923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell ACC_3V(h, ctx->_EyeZDir); 21023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell normalized = 0; 21123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 21223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell else { 21323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell h = light->_h_inf_norm; 21423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell normalized = 1; 21523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 21622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 21723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell n_dot_h = DOT3(normal, h); 21823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 21923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (n_dot_h > 0.0F) { 220acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul const struct gl_material *mat = &ctx->Light.Material[0]; 22123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat spec_coef; 22223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat shininess = mat->Shininess; 22323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 22423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (!normalized) { 22523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell n_dot_h *= n_dot_h; 22623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell n_dot_h /= LEN_SQUARED_3FV( h ); 22723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell shininess *= .5; 22823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 22922144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes 23023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GET_SHINE_TAB_ENTRY( ctx->_ShineTable[0], n_dot_h, spec_coef ); 23123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 23223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (spec_coef > 1.0e-10) { 233acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul if (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR) { 234acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V( specularContrib, spec_coef, 235acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul light->_MatSpecular[0]); 236acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul } 237acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul else { 238acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V( diffuseContrib, spec_coef, 239acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul light->_MatSpecular[0]); 240acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul } 24123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell specular += spec_coef * light->_sli * attenuation; 24223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 24323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 24423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 24523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 246acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V( diffuseColor, attenuation, diffuseContrib ); 247acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ACC_SCALE_SCALAR_3V( specularColor, attenuation, specularContrib ); 2485e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen } 24923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 250b6bcae5698df88f7730d40004ce7ce0462e97a20Brian Paul if (ctx->Visual.rgbMode) { 251acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rcolor[0] = CLAMP(diffuseColor[0], 0.0F, 1.0F); 252acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rcolor[1] = CLAMP(diffuseColor[1], 0.0F, 1.0F); 253acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rcolor[2] = CLAMP(diffuseColor[2], 0.0F, 1.0F); 254acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rcolor[3] = CLAMP(diffuseColor[3], 0.0F, 1.0F); 255acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rspec[0] = CLAMP(specularColor[0], 0.0F, 1.0F); 256acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rspec[1] = CLAMP(specularColor[1], 0.0F, 1.0F); 257acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rspec[2] = CLAMP(specularColor[2], 0.0F, 1.0F); 258acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul Rspec[3] = CLAMP(specularColor[3], 0.0F, 1.0F); 25923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 26023caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell else { 26123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell struct gl_material *mat = &ctx->Light.Material[0]; 26223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat d_a = mat->DiffuseIndex - mat->AmbientIndex; 26323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat s_a = mat->SpecularIndex - mat->AmbientIndex; 26423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell GLfloat ind = mat->AmbientIndex 26523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + diffuse * (1.0F-specular) * d_a 26623caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell + specular * s_a; 26723caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell if (ind > mat->SpecularIndex) { 26823caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell ind = mat->SpecularIndex; 26923caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 270acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul *Rindex = (GLuint) (GLint) ind; 27123caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell } 27223caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 27323caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell} 27423caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell 27523caf20169ac38436ee9c13914f1d6aa7cf6bb5eKeith Whitwell/* 276afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Caller: context->API.RasterPos4f 277afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 2783b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulstatic void 2793b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paulraster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 280afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 281afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg GLfloat v[4], eye[4], clip[4], ndc[3], d; 282cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); 283cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell FLUSH_CURRENT(ctx, 0); 284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 285afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg if (ctx->NewState) 28608836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul _mesa_update_state( ctx ); 287afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ASSIGN_4V( v, x, y, z, w ); 289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg TRANSFORM_POINT( eye, ctx->ModelView.m, v ); 290afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 291afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* raster color */ 2923b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul if (ctx->Light.Enabled) { 293afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg GLfloat *norm, eyenorm[3]; 29486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul GLfloat *objnorm = ctx->Current.Attrib[VERT_ATTRIB_NORMAL]; 295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 2961e1aac034c986a08248861363c0baa27dc2ae2d5Keith Whitwell if (ctx->_NeedEyeCoords) { 297afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg GLfloat *inv = ctx->ModelView.inv; 298afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg TRANSFORM_NORMAL( eyenorm, objnorm, inv ); 299afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg norm = eyenorm; 3003b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul } 3013b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul else { 302afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg norm = objnorm; 303afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 304afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 3053b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul shade_rastpos( ctx, v, norm, 3063b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul ctx->Current.RasterColor, 307acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul ctx->Current.RasterSecondaryColor, 3083b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul &ctx->Current.RasterIndex ); 309afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 310afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 311afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg else { 312afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* use current color or index */ 313b6bcae5698df88f7730d40004ce7ce0462e97a20Brian Paul if (ctx->Visual.rgbMode) { 31486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul COPY_4FV(ctx->Current.RasterColor, 31586b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_COLOR0]); 316acc722d4b890da7ed0ede24751e2bcaf28cc1468Brian Paul COPY_4FV(ctx->Current.RasterSecondaryColor, 31786b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_COLOR1]); 318afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg else { 320afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ctx->Current.RasterIndex = ctx->Current.Index; 321afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 322afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 323afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 324afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* compute raster distance */ 32599f16d01dd508ccac9d37488bf83a7aed5c05832Brian Paul ctx->Current.RasterDistance = (GLfloat) 326afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg GL_SQRT( eye[0]*eye[0] + eye[1]*eye[1] + eye[2]*eye[2] ); 327afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 328afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* apply projection matrix: clip = Proj * eye */ 329afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg TRANSFORM_POINT( clip, ctx->ProjectionMatrix.m, eye ); 330afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 331afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* clip to view volume */ 3328c2f6c5059a60d845716277973c826f4069926e6Brian Paul if (ctx->Transform.RasterPositionUnclipped) { 3338c2f6c5059a60d845716277973c826f4069926e6Brian Paul /* GL_IBM_rasterpos_clip: only clip against Z */ 3348c2f6c5059a60d845716277973c826f4069926e6Brian Paul if (viewclip_point_z(clip) == 0) 3358c2f6c5059a60d845716277973c826f4069926e6Brian Paul ctx->Current.RasterPosValid = GL_FALSE; 3368c2f6c5059a60d845716277973c826f4069926e6Brian Paul } 3378c2f6c5059a60d845716277973c826f4069926e6Brian Paul else if (viewclip_point(clip) == 0) { 3388c2f6c5059a60d845716277973c826f4069926e6Brian Paul /* Normal OpenGL behaviour */ 339afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ctx->Current.RasterPosValid = GL_FALSE; 340afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg return; 341afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 343afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* clip to user clipping planes */ 3443b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul if (ctx->Transform._AnyClip && 3453b399df6382d3cfb3cf9bfde4888878bebd2903fBrian Paul userclip_point(ctx, clip) == 0) { 346afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ctx->Current.RasterPosValid = GL_FALSE; 347afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg return; 348afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 349afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 350afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg /* ndc = clip / W */ 351afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ASSERT( clip[3]!=0.0 ); 352afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg d = 1.0F / clip[3]; 353afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ndc[0] = clip[0] * d; 354afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ndc[1] = clip[1] * d; 355afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ndc[2] = clip[2] * d; 356afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 3575e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen ctx->Current.RasterPos[0] = (ndc[0] * ctx->Viewport._WindowMap.m[MAT_SX] + 35814940c4ffe066a8b85bc14274c19ad3d8e334d61Keith Whitwell ctx->Viewport._WindowMap.m[MAT_TX]); 3595e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen ctx->Current.RasterPos[1] = (ndc[1] * ctx->Viewport._WindowMap.m[MAT_SY] + 36014940c4ffe066a8b85bc14274c19ad3d8e334d61Keith Whitwell ctx->Viewport._WindowMap.m[MAT_TY]); 3615e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen ctx->Current.RasterPos[2] = (ndc[2] * ctx->Viewport._WindowMap.m[MAT_SZ] + 362b6bcae5698df88f7730d40004ce7ce0462e97a20Brian Paul ctx->Viewport._WindowMap.m[MAT_TZ]) / ctx->DepthMaxF; 363afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ctx->Current.RasterPos[3] = clip[3]; 364afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg ctx->Current.RasterPosValid = GL_TRUE; 365afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 36686b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterFogCoord = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 367afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 368afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg { 369afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg GLuint texSet; 3709c05c0494d06dcf429d8489107be49e339305690Brian Paul for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) { 371afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet], 37286b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] ); 373afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 374afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 375afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 376afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg if (ctx->RenderMode==GL_SELECT) { 37708836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] ); 378afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 379afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 380afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 381afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 382afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 383afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 384fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 385fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2d(GLdouble x, GLdouble y) 386afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 3877b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 388fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 389afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 390fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 391fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2f(GLfloat x, GLfloat y) 392fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 393fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(x, y, 0.0F, 1.0F); 394fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 395afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 396fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 397fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2i(GLint x, GLint y) 398fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 3997b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 400fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 401afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 402fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 403fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2s(GLshort x, GLshort y) 404fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 405fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(x, y, 0.0F, 1.0F); 406fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 407afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 408fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 409fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3d(GLdouble x, GLdouble y, GLdouble z) 410fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4117b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 412fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 413afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 414fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 415fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3f(GLfloat x, GLfloat y, GLfloat z) 416fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 417fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(x, y, z, 1.0F); 418fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 419afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 420fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 421fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3i(GLint x, GLint y, GLint z) 422fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4237b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 424fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 425fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 426fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 427fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3s(GLshort x, GLshort y, GLshort z) 428fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 429fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(x, y, z, 1.0F); 430fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 431fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 432fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 433fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) 434fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4357b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 436fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 437fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 438fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 439fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) 440fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 441fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul GET_CURRENT_CONTEXT(ctx); 442fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul raster_pos4f(ctx, x, y, z, w); 443fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 444fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 445fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 446fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4i(GLint x, GLint y, GLint z, GLint w) 447fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4487b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 449fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 450fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 451fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 452fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) 453fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 454fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(x, y, z, w); 455fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 456fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 457fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 458fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2dv(const GLdouble *v) 459fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4607b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 461fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 462fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 463fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 464fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2fv(const GLfloat *v) 465fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 466fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], 0.0F, 1.0F); 467fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 468fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 469fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 470fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2iv(const GLint *v) 471fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4727b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 473fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 474fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 475fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 476fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos2sv(const GLshort *v) 477fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 478fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], 0.0F, 1.0F); 479fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 480fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 481fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 482fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3dv(const GLdouble *v) 483fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4847b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 485fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 486fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 487fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 488fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3fv(const GLfloat *v) 489fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 490fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], v[2], 1.0F); 491fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 492fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 493fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 494fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3iv(const GLint *v) 495fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 4967b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 497fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 498fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 499fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 500fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos3sv(const GLshort *v) 501fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 502fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], v[2], 1.0F); 503fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 504fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 505fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 506fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4dv(const GLdouble *v) 507fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 5087b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], 5097b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 510fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 511fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 512fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 513fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4fv(const GLfloat *v) 514fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 515fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], v[2], v[3]); 516fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 517fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 518fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 519fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4iv(const GLint *v) 520fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 5217b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_RasterPos4f((GLfloat) v[0], (GLfloat) v[1], 5227b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 523fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul} 524fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 525fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid 526fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_RasterPos4sv(const GLshort *v) 527fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{ 528fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul _mesa_RasterPos4f(v[0], v[1], v[2], v[3]); 529afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 5301b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5311b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5331b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/**********************************************************************/ 5341b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/*** GL_MESA_window_pos ***/ 5351b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/**********************************************************************/ 5361b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5371b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5381b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/* 5391b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * This is a MESA extension function. Pretty much just like glRasterPos 5401b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * except we don't apply the modelview or projection matrices; specify a 5411b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * window coordinate directly. 5421b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * Caller: context->API.WindowPos4fMESA pointer. 5431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul */ 5441b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 5451b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) 5461b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 5471b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GET_CURRENT_CONTEXT(ctx); 5481b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); 5491b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul FLUSH_CURRENT(ctx, 0); 5501b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5511b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* set raster position */ 5521b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[0] = x; 5531b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[1] = y; 5541b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[2] = CLAMP( z, 0.0F, 1.0F ); 5551b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPos[3] = w; 5561b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5571b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterPosValid = GL_TRUE; 5581b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterDistance = 0.0F; 5591b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterFogCoord = 0.0F; 5601b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5611b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* raster color = current color or index */ 5621b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul if (ctx->Visual.rgbMode) { 56386b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul COPY_4FV(ctx->Current.RasterColor, 56486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_COLOR0]); 5651b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 5661b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul else { 5671b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul ctx->Current.RasterIndex = ctx->Current.Index; 5681b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 5691b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5701b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* raster texcoord = current texcoord */ 5711b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul { 5721b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GLuint texSet; 5731b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) { 5741b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet], 57586b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] ); 5761b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 5771b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 5781b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5791b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul if (ctx->RenderMode==GL_SELECT) { 5801b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] ); 5811b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul } 5821b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 5831b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5841b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5851b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5861b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5871b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 5881b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2dMESA(GLdouble x, GLdouble y) 5891b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 5907b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 5911b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 5921b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5931b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 5941b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2fMESA(GLfloat x, GLfloat y) 5951b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 5961b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F); 5971b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 5981b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 5991b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6001b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2iMESA(GLint x, GLint y) 6011b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6027b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, 0.0F, 1.0F); 6031b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6041b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6051b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6061b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2sMESA(GLshort x, GLshort y) 6071b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6081b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F); 6091b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6101b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6111b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6121b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) 6131b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6147b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 6151b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6161b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6171b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6181b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) 6191b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6201b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(x, y, z, 1.0F); 6211b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6221b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6231b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6241b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z) 6251b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6267b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 6271b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6281b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6291b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6301b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z) 6311b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(x, y, z, 1.0F); 6331b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6341b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6351b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6361b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) 6371b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6387b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 6391b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6401b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6411b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6421b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) 6431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6447b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 6451b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6461b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6471b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6481b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w) 6491b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6501b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(x, y, z, w); 6511b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6521b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6531b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6541b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2dvMESA(const GLdouble *v) 6551b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6567b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 6571b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6581b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6591b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6601b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2fvMESA(const GLfloat *v) 6611b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6621b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F); 6631b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6641b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6651b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6661b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2ivMESA(const GLint *v) 6671b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6687b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); 6691b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6701b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6711b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6721b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos2svMESA(const GLshort *v) 6731b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6741b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F); 6751b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6761b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6771b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6781b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3dvMESA(const GLdouble *v) 6791b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6807b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 6811b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6821b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6831b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6841b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3fvMESA(const GLfloat *v) 6851b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6861b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F); 6871b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6881b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6891b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6901b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3ivMESA(const GLint *v) 6911b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6927b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); 6931b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 6941b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 6951b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 6961b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos3svMESA(const GLshort *v) 6971b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 6981b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F); 6991b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7001b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7011b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 7021b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4dvMESA(const GLdouble *v) 7031b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 7047b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], 7057b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 7061b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7071b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7081b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 7091b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4fvMESA(const GLfloat *v) 7101b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 7111b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]); 7121b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7131b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7141b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 7151b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4ivMESA(const GLint *v) 7161b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 7177b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz _mesa_WindowPos4fMESA((GLfloat) v[0], (GLfloat) v[1], 7187b9fe820a3fba3849864682fbb1cb512362934abKarl Schultz (GLfloat) v[2], (GLfloat) v[3]); 7191b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7201b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7211b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid 7221b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul_mesa_WindowPos4svMESA(const GLshort *v) 7231b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 7241b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]); 7251b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7261b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7271b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7281b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7291b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul#if 0 7301b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7311b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul/* 7321b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul * OpenGL implementation of glWindowPos*MESA() 7331b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul */ 7341b258989462e907e45abbdf8743b0a75f22c02b3Brian Paulvoid glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) 7351b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul{ 7361b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul GLfloat fx, fy; 7371b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7381b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* Push current matrix mode and viewport attributes */ 7391b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushAttrib( GL_TRANSFORM_BIT | GL_VIEWPORT_BIT ); 7401b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7411b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* Setup projection parameters */ 7421b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_PROJECTION ); 7431b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushMatrix(); 7441b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glLoadIdentity(); 7451b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_MODELVIEW ); 7461b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPushMatrix(); 7471b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glLoadIdentity(); 7481b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7491b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glDepthRange( z, z ); 7501b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glViewport( (int) x - 1, (int) y - 1, 2, 2 ); 7511b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7521b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* set the raster (window) position */ 7531b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul fx = x - (int) x; 7541b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul fy = y - (int) y; 7551b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glRasterPos4f( fx, fy, 0.0, w ); 7561b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7571b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul /* restore matrices, viewport and matrix mode */ 7581b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopMatrix(); 7591b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glMatrixMode( GL_PROJECTION ); 7601b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopMatrix(); 7611b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7621b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul glPopAttrib(); 7631b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul} 7641b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul 7651b258989462e907e45abbdf8743b0a75f22c02b3Brian Paul#endif 7665b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7675b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7685b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul/**********************************************************************/ 7695b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul/*** GL_ARB_window_pos ***/ 7705b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul/**********************************************************************/ 7715b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7725b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2dARB(GLdouble x, GLdouble y) 7735b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7745b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F); 7755b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 7765b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7775b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2fARB(GLfloat x, GLfloat y) 7785b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7795b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB(x, y, 0.0F); 7805b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 7815b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7825b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2iARB(GLint x, GLint y) 7835b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7845b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F); 7855b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 7865b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7875b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2sARB(GLshort x, GLshort y) 7885b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7895b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F); 7905b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 7915b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7925b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2dvARB(const GLdouble *p) 7935b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7945b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F); 7955b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 7965b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 7975b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2fvARB(const GLfloat *p) 7985b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 7995b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F); 8005b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8015b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8025b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2ivARB(const GLint *p) 8035b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8045b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F); 8055b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8065b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8075b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos2svARB(const GLshort *p) 8085b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8095b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F); 8105b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8115b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8125b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3dARB(GLdouble x, GLdouble y, GLdouble z) 8135b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8145b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z); 8155b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8165b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8175b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3fARB(GLfloat x, GLfloat y, GLfloat z) 8185b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8195b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul GET_CURRENT_CONTEXT(ctx); 8205b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul GLfloat z2; 8215b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8225b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); 8235b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul FLUSH_CURRENT(ctx, 0); 8245b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8255b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near) 8265b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul + ctx->Viewport.Near; 8275b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8285b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul /* set raster position */ 8295b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterPos[0] = x; 8305b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterPos[1] = y; 8315b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterPos[2] = z2; 8325b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterPos[3] = 0.0F; 8335b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8345b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterPosValid = GL_TRUE; 8355b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul /* XXX might have to change this */ 83686b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 83786b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterFogCoord = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 8385b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8395b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul /* raster color = current color or index */ 8405b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul if (ctx->Visual.rgbMode) { 84186b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterColor[0] 84286b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F); 84386b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterColor[1] 84486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F); 84586b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterColor[2] 84686b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F); 84786b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.RasterColor[3] 84886b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F); 8495b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterSecondaryColor[0] 85086b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F); 8515b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterSecondaryColor[1] 85286b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F); 8535b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterSecondaryColor[2] 85486b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F); 8555b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterSecondaryColor[3] 85686b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F); 8575b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul } 8585b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul else { 8595b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul ctx->Current.RasterIndex = ctx->Current.Index; 8605b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul } 8615b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8625b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul /* raster texcoord = current texcoord */ 8635b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul { 8645b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul GLuint texSet; 8655b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) { 8665b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet], 86786b842790b720cd6b1499ce8edca8a4e9c8dc029Brian Paul ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] ); 8685b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul } 8695b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul } 8705b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8715b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul if (ctx->RenderMode==GL_SELECT) { 8725b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] ); 8735b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul } 8745b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8755b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8765b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3iARB(GLint x, GLint y, GLint z) 8775b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8785b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z); 8795b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8805b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8815b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3sARB(GLshort x, GLshort y, GLshort z) 8825b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8835b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z); 8845b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8855b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8865b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3dvARB(const GLdouble *p) 8875b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8885b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]); 8895b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8905b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8915b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3fvARB(const GLfloat *p) 8925b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8935b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB(p[0], p[1], p[2]); 8945b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 8955b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 8965b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3ivARB(const GLint *p) 8975b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 8985b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]); 8995b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 9005b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 9015b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paulvoid _mesa_WindowPos3svARB(const GLshort *p) 9025b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul{ 9035b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]); 9045b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul} 9055b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2eBrian Paul 906