MCPcopy Create free account
hub / github.com/assaultcube/AC / render_world

Function render_world

source/src/worldrender.cpp:297–338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

295// does some out of date view frustrum optimisation that doesn't contribute much anymore
296
297void render_world(float vx, float vy, float vh, float changelod, int yaw, int pitch, float fov, float fovy, int w, int h)
298{
299 loopi(LARGEST_FACTOR) stats[i] = 0;
300 min_lod = minimap || (player1->isspectating() && player1->spectatemode == SM_OVERVIEW) ? MAX_LOD : MIN_LOD+iabs(pitch)/12;
301 yaw = 360-yaw;
302 float widef = fov/75.0f;
303 int cdist = iabs(yaw%90-45);
304 if(cdist<7) // hack to avoid popup at high fovs at 45 yaw
305 {
306 min_lod = max(min_lod, (int)(MIN_LOD+(10-cdist)/1.0f*widef)); // less if lod worked better
307 widef = 1.0f;
308 }
309 lod = (int)(lod*changelod);
310 if(lod<minlod) lod = minlod;
311 if(lod>MAX_LOD) lod = MAX_LOD;
312 lodtop = lodbot = lodleft = lodright = min_lod;
313 if(yaw>45 && yaw<=135)
314 {
315 lodleft = lod;
316 distlod(lodtop, lodbot, yaw-45, widef);
317 }
318 else if(yaw>135 && yaw<=225)
319 {
320 lodbot = lod;
321 distlod(lodleft, lodright, yaw-135, widef);
322 }
323 else if(yaw>225 && yaw<=315)
324 {
325 lodright = lod;
326 distlod(lodbot, lodtop, yaw-225, widef);
327 }
328 else
329 {
330 lodtop = lod;
331 distlod(lodright, lodleft, yaw<=45 ? yaw+45 : yaw-315, widef);
332 }
333 render_floor = pitch<0.5f*fovy;
334 render_ceil = -pitch<0.5f*fovy;
335
336 render_seg_new(vx, vy, vh, MAX_MIP, 0, 0, ssize>>MAX_MIP, ssize>>MAX_MIP);
337 mipstats(stats);
338}
339

Callers 3

drawreflectionFunction · 0.85
drawminimapFunction · 0.85
gl_drawframeFunction · 0.85

Calls 7

iabsFunction · 0.85
maxFunction · 0.85
distlodFunction · 0.85
render_seg_newFunction · 0.85
mipstatsFunction · 0.85
isspectatingMethod · 0.80
loopiFunction · 0.70

Tested by

no test coverage detected