ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/sm_ogl.c
(Generate patch)

Comparing ray/src/hd/sm_ogl.c (file contents):
Revision 3.1 by gwlarson, Wed Aug 19 17:45:24 1998 UTC vs.
Revision 3.2 by gwlarson, Thu Aug 20 16:47:21 1998 UTC

# Line 162 | Line 162 | FVECT vp;
162       */
163    for(j=2; j>= 0; j--)
164    {
165 + #ifdef DEBUG
166 +    if(SM_BG_SAMPLE(sm,T_NTH_V(tri,j)))
167 +      eputs("SmRenderTri(): shouldnt have bg samples\n");
168 + #endif
169      glColor3ub(SM_NTH_RGB(sm,T_NTH_V(tri,j))[0],
170                 SM_NTH_RGB(sm,T_NTH_V(tri,j))[1],
171                 SM_NTH_RGB(sm,T_NTH_V(tri,j))[2]);
# Line 173 | Line 177 | FVECT vp;
177   /* NOTE SEEMS BAD TO PENALIZE POLYGONS INFRONT BY LETTING
178   ADJACENT TRIANGLES TO BG be BG
179   */
180 < smRender_bg_tri(sm,i,vp)
180 > smRender_bg_tri(sm,i,vp,d)
181   SM *sm;
182   int i;
183   FVECT vp;
184 + double d;
185   {
186    TRI *tri;
187    FVECT p;
188    int j,ids[3],cnt;
189 <  BYTE rgb[3];
189 >  int rgb[3];
190  
191 +
192    tri = SM_NTH_TRI(sm,i);
193    SM_CLEAR_NTH_T_NEW(sm,i);
194    if(smNew_tri_cnt)
# Line 214 | Line 220 | FVECT vp;
220                   SM_NTH_RGB(sm,ids[j])[2]);
221      else
222        glColor3ub(rgb[0],rgb[1],rgb[2]);
223 <    VSUB(p,SM_NTH_WV(sm,ids[j]),SM_VIEW_CENTER(sm));
223 >    if(SM_BG_SAMPLE(sm,ids[j]))
224 >      VSUB(p,SM_NTH_WV(sm,ids[j]),SM_VIEW_CENTER(sm));
225 >    else
226 >      smDir(sm,p,ids[j]);
227 >    if(dev_zmin > 1.0)
228 >    {
229 >      p[0] *= d;
230 >      p[1] *= d;
231 >      p[2] *= d;
232 >    }
233      VADD(p,p,vp);
234      glVertex3d(p[0],p[1],p[2]);
235    }
# Line 226 | Line 241 | FVECT vp;
241   {
242    int i;
243    TRI *tri;
244 <  double ptr[3];
244 >  double ptr[3],d;
245    int j;
246  
247 +  d = (dev_zmin+dev_zmax)/2.0;
248    glPushAttrib(GL_DEPTH_BUFFER_BIT);
249    
250    /* First draw background polygons */
251 +
252    glDisable(GL_DEPTH_TEST);
253    glBegin(GL_TRIANGLES);
254    SM_FOR_ALL_ACTIVE_BG_TRIS(sm,i)
255 <    smRender_bg_tri(sm,i,vp);
255 >    smRender_bg_tri(sm,i,vp,d);
256    glEnd();
257    
258    glEnable(GL_DEPTH_TEST);
# Line 322 | Line 339 | VIEW *vp;
339    static int tsize = 0;
340    int i;
341    GLint depth_test;
342 +  double d;
343  
344    /* For all of the NEW triangles (since last update): assume
345       ACTIVE. Go through and sort on depth value (from vp). Turn
# Line 345 | Line 363 | VIEW *vp;
363    glPushAttrib(GL_DEPTH_BUFFER_BIT);
364    glDepthFunc(GL_ALWAYS);          /* Turn off Depth-painter's algorithm */
365  
366 +  d = (dev_zmin+dev_zmax)/2.0;
367    /* Now render back-to front */
368    /* First render bg triangles */
369    glDisable(GL_DEPTH_TEST);
370    glBegin(GL_TRIANGLES);
371    for(i=0; i< smNew_tri_cnt; i++)
372      if(SM_BG_TRI(sm,td[i].tri))
373 <      smRender_bg_tri(sm,td[i].tri,vp);
373 >      smRender_bg_tri(sm,td[i].tri,vp,d);
374    glEnd();
375  
376    glEnable(GL_DEPTH_TEST);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines