diff options
| author | xolatile | 2025-08-05 01:05:35 +0200 |
|---|---|---|
| committer | xolatile | 2025-08-05 01:05:35 +0200 |
| commit | 6762e292d02e37a69a807e01493d4e14319cca33 (patch) | |
| tree | 6be0e9914ababfe279644172f6eee9c2d0de9ef5 /src/engine/rendergl.cpp | |
| parent | d309df4ce4d8ad0ed995a8e1c4267412a7782021 (diff) | |
| download | xolatile-badassbug-6762e292d02e37a69a807e01493d4e14319cca33.tar.xz xolatile-badassbug-6762e292d02e37a69a807e01493d4e14319cca33.tar.zst | |
Do not compile, deleting stuff...
Diffstat (limited to 'src/engine/rendergl.cpp')
| -rw-r--r-- | src/engine/rendergl.cpp | 410 |
1 files changed, 6 insertions, 404 deletions
diff --git a/src/engine/rendergl.cpp b/src/engine/rendergl.cpp index 997d15a..6d3e705 100644 --- a/src/engine/rendergl.cpp +++ b/src/engine/rendergl.cpp @@ -496,9 +496,7 @@ void gl_checkextensions() if(glversion >= 300 || hasext("GL_EXT_gpu_shader4")) { // on DX10 or above class cards (i.e. GF8 or RadeonHD) enable expensive features - extern int glare, maxdynlights, depthfxsize, blurdepthfx, texcompress; - waterfallrefract = 1; - glare = 1; + extern int maxdynlights, depthfxsize, blurdepthfx, texcompress; maxdynlights = MAXDYNLIGHTS; depthfxsize = 10; blurdepthfx = 0; @@ -590,19 +588,7 @@ void setcamprojmatrix(bool init = true, bool flush = false) GLOBALPARAM(camprojmatrix, camprojmatrix); - if(fogging) - { - vec fogplane(cammatrix.c); - fogplane.x /= projmatrix.a.x; - fogplane.y /= projmatrix.b.y; - fogplane.z /= projmatrix.c.w; - GLOBALPARAMF(fogplane, fogplane.x, fogplane.y, 0, fogplane.z); - } - else - { - vec2 lineardepthscale = projmatrix.lineardepthscale(); - GLOBALPARAMF(fogplane, 0, 0, lineardepthscale.x, lineardepthscale.y); - } + vec2 lineardepthscale = projmatrix.lineardepthscale(); if(flush && Shader::lastshader) Shader::lastshader->flushparams(); } @@ -702,7 +688,7 @@ FVAR(thirdpersonup, -25, 0, 25); FVAR(thirdpersonside, -25, 0, 25); physent *camera1 = NULL; bool detachedcamera = false; -bool isthirdperson() { return player!=camera1 || detachedcamera || reflecting; } +bool isthirdperson() { return player!=camera1 || detachedcamera; } void fixcamerarange() { @@ -828,9 +814,6 @@ vec calcavatarpos(const vec &pos, float dist) return dir.add(camera1->o); } -VAR(reflectclip, 0, 6, 64); -VAR(reflectclipavatar, -64, 0, 64); - matrix4 clipmatrix, noclipmatrix; void renderavatar() @@ -863,7 +846,7 @@ void enablepolygonoffset(GLenum type) return; } - bool clipped = reflectz < 1e15f && reflectclip; + bool clipped = false; nooffsetmatrix = projmatrix; projmatrix.d.z += depthoffset * (clipped ? noclipmatrix.c.z : projmatrix.c.z); @@ -885,7 +868,6 @@ void disablepolygonoffset(GLenum type) void calcspherescissor(const vec ¢er, float size, float &sx1, float &sy1, float &sx2, float &sy2) { vec worldpos(center), e; - if(reflecting) worldpos.z = 2*reflectz - worldpos.z; cammatrix.transform(worldpos, e); if(e.z > 2*size) { sx1 = sy1 = 1; sx2 = sy2 = -1; return; } float zzrr = e.z*e.z - size*size, @@ -1053,27 +1035,16 @@ void hudquad(float x, float y, float w, float h, float tx, float ty, float tw, f HUDQUAD(x, y, x+w, y+h, tx, ty, tx+tw, ty+th); } -VARR(fog, 16, 4000, 1000024); -bvec fogcolor(0x80, 0x99, 0xB3); -HVARFR(fogcolour, 0, 0x8099B3, 0xFFFFFF, -{ - fogcolor = bvec((fogcolour>>16)&0xFF, (fogcolour>>8)&0xFF, fogcolour&0xFF); -}); - static float findsurface(int fogmat, const vec &v, int &abovemat) { - fogmat &= MATF_VOLUME; ivec o(v), co; int csize; do { cube &c = lookupcube(o, 0, co, csize); int mat = c.material&MATF_VOLUME; - if(mat != fogmat) - { - abovemat = isliquid(mat) ? (int) c.material : (int) MAT_AIR; + abovemat = (int) MAT_AIR; return o.z; - } o.z = co.z + csize; } while(o.z < worldsize); @@ -1081,161 +1052,6 @@ static float findsurface(int fogmat, const vec &v, int &abovemat) return worldsize; } -static void blendfog(int fogmat, float blend, float logblend, float &start, float &end, vec &fogc) -{ - switch(fogmat&MATF_VOLUME) - { - case MAT_WATER: - { - const bvec &wcol = getwatercolor(fogmat); - int wfog = getwaterfog(fogmat); - fogc.madd(wcol.tocolor(), blend); - end += logblend*min(fog, max(wfog*4, 32)); - break; - } - - case MAT_LAVA: - { - const bvec &lcol = getlavacolor(fogmat); - int lfog = getlavafog(fogmat); - fogc.madd(lcol.tocolor(), blend); - end += logblend*min(fog, max(lfog*4, 32)); - break; - } - - default: - fogc.madd(fogcolor.tocolor(), blend); - start += logblend*(fog+64)/8; - end += logblend*fog; - break; - } -} - -vec oldfogcolor(0, 0, 0), curfogcolor(0, 0, 0); -float oldfogstart = 0, oldfogend = 1000000, curfogstart = 0, curfogend = 1000000; - -void setfogcolor(const vec &v) -{ - GLOBALPARAM(fogcolor, v); -} - -void zerofogcolor() -{ - setfogcolor(vec(0, 0, 0)); -} - -void resetfogcolor() -{ - setfogcolor(curfogcolor); -} - -void pushfogcolor(const vec &v) -{ - oldfogcolor = curfogcolor; - curfogcolor = v; - resetfogcolor(); -} - -void popfogcolor() -{ - curfogcolor = oldfogcolor; - resetfogcolor(); -} - -void setfogdist(float start, float end) -{ - GLOBALPARAMF(fogparams, 1/(end - start), end/(end - start)); -} - -void clearfogdist() -{ - setfogdist(0, 1000000); -} - -void resetfogdist() -{ - setfogdist(curfogstart, curfogend); -} - -void pushfogdist(float start, float end) -{ - oldfogstart = curfogstart; - oldfogend = curfogend; - curfogstart = start; - curfogend = end; - resetfogdist(); -} - -void popfogdist() -{ - curfogstart = oldfogstart; - curfogend = oldfogend; - resetfogdist(); -} - -static void resetfog() -{ - resetfogcolor(); - resetfogdist(); - - glClearColor(curfogcolor.r, curfogcolor.g, curfogcolor.b, 1.0f); -} - -static void setfog(int fogmat, float below = 1, int abovemat = MAT_AIR) -{ - float logscale = 256, logblend = log(1 + (logscale - 1)*below) / log(logscale); - - curfogstart = curfogend = 0; - curfogcolor = vec(0, 0, 0); - blendfog(fogmat, below, logblend, curfogstart, curfogend, curfogcolor); - if(below < 1) blendfog(abovemat, 1-below, 1-logblend, curfogstart, curfogend, curfogcolor); - - resetfog(); -} - -static void blendfogoverlay(int fogmat, float blend, vec &overlay) -{ - float maxc; - switch(fogmat&MATF_VOLUME) - { - case MAT_WATER: - { - const bvec &wcol = getwatercolor(fogmat); - maxc = max(wcol.r, max(wcol.g, wcol.b)); - overlay.madd(vec(wcol.r, wcol.g, wcol.b).div(min(32.0f + maxc*7.0f/8.0f, 255.0f)).max(0.4f), blend); - break; - } - - case MAT_LAVA: - { - const bvec &lcol = getlavacolor(fogmat); - maxc = max(lcol.r, max(lcol.g, lcol.b)); - overlay.madd(vec(lcol.r, lcol.g, lcol.b).div(min(32.0f + maxc*7.0f/8.0f, 255.0f)).max(0.4f), blend); - break; - } - - default: - overlay.add(blend); - break; - } -} - -void drawfogoverlay(int fogmat, float fogblend, int abovemat) -{ - SETSHADER(fogoverlay); - - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - vec overlay(0, 0, 0); - blendfogoverlay(fogmat, fogblend, overlay); - blendfogoverlay(abovemat, 1-fogblend, overlay); - - gle::color(overlay); - screenquad(); - - glDisable(GL_BLEND); -} - bool renderedgame = false; void rendergame(bool mainpass) @@ -1244,171 +1060,6 @@ void rendergame(bool mainpass) if(!shadowmapping) renderedgame = true; } -VARP(skyboxglare, 0, 1, 1); - -void drawglare() -{ - glaring = true; - refracting = -1; - - pushfogcolor(vec(0, 0, 0)); - - glClearColor(0, 0, 0, 1); - glClear((skyboxglare && !shouldclearskyboxglare() ? 0 : GL_COLOR_BUFFER_BIT) | GL_DEPTH_BUFFER_BIT); - - rendergeom(); - - if(skyboxglare) drawskybox(farplane, false); - - renderreflectedmapmodels(); - rendergame(); - renderavatar(); - - renderwater(); - rendermaterials(); - renderalphageom(); - renderparticles(); - - popfogcolor(); - - refracting = 0; - glaring = false; -} - -VARP(reflectmms, 0, 1, 1); -VARR(refractsky, 0, 0, 1); - -matrix4 noreflectmatrix; - -void drawreflection(float z, bool refract, int fogdepth, const bvec &col) -{ - reflectz = z < 0 ? 1e16f : z; - reflecting = !refract; - refracting = refract ? (z < 0 || camera1->o.z >= z ? -1 : 1) : 0; - fading = waterrefract && waterfade && z>=0; - fogging = refracting<0 && z>=0; - refractfog = fogdepth; - - if(fogging) - { - pushfogdist(camera1->o.z - z, camera1->o.z - (z - max(refractfog, 1))); - pushfogcolor(col.tocolor()); - } - else - { - vec color(0, 0, 0); - float start = 0, end = 0; - blendfog(MAT_AIR, 1, 1, start, end, color); - pushfogdist(start, end); - pushfogcolor(color); - } - - if(fading) - { - float scale = fogging ? -0.25f : 0.25f, offset = 2*fabs(scale) - scale*z; - GLOBALPARAMF(waterfadeparams, scale, offset, -scale, offset + camera1->o.z*scale); - } - - if(reflecting) - { - noreflectmatrix = cammatrix; - cammatrix.reflectz(z); - - glFrontFace(GL_CCW); - } - - if(reflectclip && z>=0) - { - float zoffset = reflectclip/4.0f, zclip; - if(refracting<0) - { - zclip = z+zoffset; - if(camera1->o.z<=zclip) zclip = z; - } - else - { - zclip = z-zoffset; - if(camera1->o.z>=zclip && camera1->o.z<=z+4.0f) zclip = z; - if(reflecting) zclip = 2*z - zclip; - } - plane clipplane; - invcammatrix.transposedtransform(plane(0, 0, refracting>0 ? 1 : -1, refracting>0 ? -zclip : zclip), clipplane); - clipmatrix.clip(clipplane, projmatrix); - noclipmatrix = projmatrix; - projmatrix = clipmatrix; - } - - setcamprojmatrix(false, true); - - renderreflectedgeom(refracting<0 && z>=0 && caustics, fogging); - - if(reflecting || refracting>0 || (refracting<0 && refractsky) || z<0) - { - if(fading) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - if(reflectclip && z>=0) - { - projmatrix = noclipmatrix; - setcamprojmatrix(false, true); - } - drawskybox(farplane, false); - if(reflectclip && z>=0) - { - projmatrix = clipmatrix; - setcamprojmatrix(false, true); - } - if(fading) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); - } - else if(fading) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); - - renderdecals(); - - if(reflectmms) renderreflectedmapmodels(); - rendergame(); - - if(refracting && z>=0 && !isthirdperson() && fabs(camera1->o.z-z) <= 0.5f*(player->eyeheight + player->aboveeye)) - { - matrix4 oldprojmatrix = projmatrix, avatarproj; - avatarproj.perspective(curavatarfov, aspect, nearplane, farplane); - if(reflectclip) - { - matrix4 avatarclip; - plane clipplane; - invcammatrix.transposedtransform(plane(0, 0, refracting, reflectclipavatar/4.0f - refracting*z), clipplane); - avatarclip.clip(clipplane, avatarproj); - projmatrix = avatarclip; - } - else projmatrix = avatarproj; - setcamprojmatrix(false, true); - game::renderavatar(); - projmatrix = oldprojmatrix; - setcamprojmatrix(false, true); - } - - rendermaterials(); - renderalphageom(fogging); - renderparticles(); - - if(fading) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - if(reflectclip && z>=0) projmatrix = noclipmatrix; - - if(reflecting) - { - cammatrix = noreflectmatrix; - - glFrontFace(GL_CW); - } - - popfogdist(); - popfogcolor(); - - reflectz = 1e16f; - refracting = 0; - reflecting = fading = fogging = false; - - setcamprojmatrix(false, true); -} - int drawtex = 0; void drawcubemap(int size, const vec &o, float yaw, float pitch, const cubemapside &side, bool onlysky) @@ -1426,10 +1077,6 @@ void drawcubemap(int size, const vec &o, float yaw, float pitch, const cubemapsi cmcamera.roll = 0; camera1 = &cmcamera; - int fogmat = lookupmaterial(o)&(MATF_VOLUME|MATF_INDEX); - - setfog(fogmat); - int farplane = worldsize*2; projmatrix.perspective(90.0f, 1.0f, nearplane, farplane); @@ -1461,16 +1108,9 @@ void drawcubemap(int size, const vec &o, float yaw, float pitch, const cubemapsi if(!limitsky()) drawskybox(farplane, false); -// queryreflections(); - rendermapmodels(); renderalphageom(); -// drawreflections(); - -// renderwater(); -// rendermaterials(); - glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } @@ -1520,8 +1160,6 @@ namespace modelpreview curfov = 2*atan2(tan(fovy/2*RAD), 1/aspect)/RAD; farplane = 1024; - clearfogdist(); - zerofogcolor(); glClearColor(0, 0, 0, 1); glClear((background ? GL_COLOR_BUFFER_BIT : 0) | GL_DEPTH_BUFFER_BIT); @@ -1538,10 +1176,6 @@ namespace modelpreview glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); - resetfogdist(); - resetfogcolor(); - glClearColor(curfogcolor.r, curfogcolor.g, curfogcolor.b, 1); - aspect = oldaspect; fovy = oldfovy; curfov = oldfov; @@ -1586,25 +1220,6 @@ void gl_drawframe() aspect = forceaspect ? forceaspect : w/float(h); fovy = 2*atan2(tan(curfov/2*RAD), aspect)/RAD; - int fogmat = lookupmaterial(camera1->o)&(MATF_VOLUME|MATF_INDEX), abovemat = MAT_AIR; - float fogblend = 1.0f, causticspass = 0.0f; - if(isliquid(fogmat&MATF_VOLUME)) - { - float z = findsurface(fogmat, camera1->o, abovemat) - WATER_OFFSET; - if(camera1->o.z < z + 1) fogblend = min(z + 1 - camera1->o.z, 1.0f); - else fogmat = abovemat; - if(caustics && (fogmat&MATF_VOLUME)==MAT_WATER && camera1->o.z < z) - causticspass = min(z - camera1->o.z, 1.0f); - } - else fogmat = MAT_AIR; - setfog(fogmat, fogblend, abovemat); - if(fogmat!=MAT_AIR) - { - float blend = abovemat==MAT_AIR ? fogblend : 1.0f; - fovy += blend*sinf(lastmillis/1000.0)*2.0f; - aspect += blend*sinf(lastmillis/1000.0+M_PI)*0.1f; - } - farplane = worldsize*2; projmatrix.perspective(fovy, aspect, nearplane, farplane); @@ -1623,13 +1238,11 @@ void gl_drawframe() if(limitsky()) drawskybox(farplane, true); - rendergeom(causticspass); + rendergeom(); extern int outline; if(!wireframe && editmode && outline) renderoutline(); - queryreflections(); - if(!limitsky()) drawskybox(farplane, false); renderdecals(true); @@ -1640,14 +1253,10 @@ void gl_drawframe() if(wireframe && editmode) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - drawglaretex(); drawdepthfxtex(); - drawreflections(); if(wireframe && editmode) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - renderwater(); - rendermaterials(); renderalphageom(); @@ -1658,10 +1267,6 @@ void gl_drawframe() glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); - addglare(); - if(isliquid(fogmat&MATF_VOLUME)) drawfogoverlay(fogmat, fogblend, abovemat); - renderpostfx(); - gl_drawhud(); renderedgame = false; @@ -1670,10 +1275,7 @@ void gl_drawframe() void gl_drawmainmenu() { xtravertsva = xtraverts = glde = gbatches = 0; - renderbackground(NULL, NULL, NULL, NULL, true, true); - renderpostfx(); - gl_drawhud(); } |
