mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 22:39:53 +00:00
2D3D:: Euclidean skies
This commit is contained in:
parent
f2d8378d0c
commit
587652e540
@ -975,6 +975,9 @@ void geometry_information::make_3d_models() {
|
|||||||
make_ball(shDisk, orbsize*.2, 2);
|
make_ball(shDisk, orbsize*.2, 2);
|
||||||
make_ball(shHeptaMarker, zhexf*.2, 1);
|
make_ball(shHeptaMarker, zhexf*.2, 1);
|
||||||
make_ball(shSnowball, zhexf*.1, 0);
|
make_ball(shSnowball, zhexf*.1, 0);
|
||||||
|
if(euclid)
|
||||||
|
make_ball(shSun, 0.5, 2);
|
||||||
|
else
|
||||||
make_ball(shSun, 3, 5);
|
make_ball(shSun, 3, 5);
|
||||||
make_ball(shNightStar, 0.75, 2);
|
make_ball(shNightStar, 0.75, 2);
|
||||||
|
|
||||||
|
@ -501,8 +501,8 @@ void dqi_poly::gldraw() {
|
|||||||
if(flags & POLY_TRIANGLES) {
|
if(flags & POLY_TRIANGLES) {
|
||||||
glhr::color2(color, (flags & POLY_INTENSE) ? 2 : 1);
|
glhr::color2(color, (flags & POLY_INTENSE) ? 2 : 1);
|
||||||
glhr::set_depthtest(model_needs_depth() && prio < PPR::SUPERLINE);
|
glhr::set_depthtest(model_needs_depth() && prio < PPR::SUPERLINE);
|
||||||
glhr::set_depthwrite(model_needs_depth() && prio != PPR::TRANSPARENT_SHADOW);
|
glhr::set_depthwrite(model_needs_depth() && prio != PPR::TRANSPARENT_SHADOW && prio != PPR::EUCLIDEAN_SKY);
|
||||||
glhr::set_fogbase(prio == PPR::SKY ? 1.0 + 5 / sightranges[geometry] : 1.0);
|
glhr::set_fogbase(prio == PPR::SKY ? 1.0 + (euclid ? 20 : 5 / sightranges[geometry]) : 1.0);
|
||||||
glDrawArrays(GL_TRIANGLES, ioffset, cnt);
|
glDrawArrays(GL_TRIANGLES, ioffset, cnt);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
26
graph.cpp
26
graph.cpp
@ -4617,6 +4617,27 @@ int get_skybrightness(int mul = 1) {
|
|||||||
return int(s * 255);
|
return int(s * 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void draw_euclidean_sky() {
|
||||||
|
if(!euclid) return;
|
||||||
|
if(WDIM == 3 || GDIM == 2) return;
|
||||||
|
transmatrix T = ggmatrix(currentmap->gamestart());
|
||||||
|
T = gpushxto0(tC0(T)) * T;
|
||||||
|
for(int x=-20; x<20; x++)
|
||||||
|
for(int y=-20; y<20; y++) {
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x, y));
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x, y+1));
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x+1, y));
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x+1, y+1));
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x, y+1));
|
||||||
|
curvepoint(T * zpush(cgi.WALL) * hpxy(x+1, y));
|
||||||
|
}
|
||||||
|
queuecurve(0, 0x0000FFFF, PPR::EUCLIDEAN_SKY).flags |= POLY_TRIANGLES;
|
||||||
|
|
||||||
|
auto &sun = queuepolyat(T * zpush(cgi.SKY+0.5) * xpush(cgi.SKY+0.5), cgi.shSun, 0xFFFF00FF, PPR::SKY);
|
||||||
|
sun.tinf = NULL;
|
||||||
|
sun.flags |= POLY_INTENSE;
|
||||||
|
}
|
||||||
|
|
||||||
void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t& wcol) {
|
void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t& wcol) {
|
||||||
|
|
||||||
if(pmodel != mdPerspective || sphere) return;
|
if(pmodel != mdPerspective || sphere) return;
|
||||||
@ -4624,6 +4645,7 @@ void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t&
|
|||||||
switch(ceiling_category(c)) {
|
switch(ceiling_category(c)) {
|
||||||
/* ceilingless levels */
|
/* ceilingless levels */
|
||||||
case 1: {
|
case 1: {
|
||||||
|
if(euclid) return;
|
||||||
if(fieldpattern::fieldval_uniq(c) % 3 == 0) {
|
if(fieldpattern::fieldval_uniq(c) % 3 == 0) {
|
||||||
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
||||||
star.tinf = NULL;
|
star.tinf = NULL;
|
||||||
@ -4648,6 +4670,7 @@ void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t&
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 2: {
|
case 2: {
|
||||||
|
if(euclid) return;
|
||||||
color_t col;
|
color_t col;
|
||||||
if(c->land == laWineyard) {
|
if(c->land == laWineyard) {
|
||||||
col = 0x4040FF;
|
col = 0x4040FF;
|
||||||
@ -4702,6 +4725,7 @@ void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t&
|
|||||||
placeSidewall(c, i, SIDE_HIGH2, V, darkena(wcol2, fd, 0xFF));
|
placeSidewall(c, i, SIDE_HIGH2, V, darkena(wcol2, fd, 0xFF));
|
||||||
}
|
}
|
||||||
if(among(c->wall, waClosedGate, waOpenGate)) draw_shapevec(c, V, qfi.fshape->levels[SIDE_WALL], 0x202020FF, PPR::WALL);
|
if(among(c->wall, waClosedGate, waOpenGate)) draw_shapevec(c, V, qfi.fshape->levels[SIDE_WALL], 0x202020FF, PPR::WALL);
|
||||||
|
if(euclid) return;
|
||||||
|
|
||||||
if(true) {
|
if(true) {
|
||||||
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
||||||
@ -4726,6 +4750,7 @@ void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t&
|
|||||||
else
|
else
|
||||||
draw_shapevec(c, V, qfi.fshape->levels[SIDE_WALL], darkena(fcol, fd, 0xFF), PPR::WALL);
|
draw_shapevec(c, V, qfi.fshape->levels[SIDE_WALL], darkena(fcol, fd, 0xFF), PPR::WALL);
|
||||||
|
|
||||||
|
if(euclid) return;
|
||||||
if(true) {
|
if(true) {
|
||||||
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
auto &star = queuepolyat(V * zpush(cgi.SKY+0.5), cgi.shNightStar, 0xFFFFFFFF, PPR::SKY);
|
||||||
star.tinf = NULL;
|
star.tinf = NULL;
|
||||||
@ -7162,6 +7187,7 @@ void drawfullmap() {
|
|||||||
draw_boundary(1);
|
draw_boundary(1);
|
||||||
|
|
||||||
draw_model_elements();
|
draw_model_elements();
|
||||||
|
draw_euclidean_sky();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* if(vid.wallmode < 2 && !euclid && !patterns::whichShape) {
|
/* if(vid.wallmode < 2 && !euclid && !patterns::whichShape) {
|
||||||
|
2
hyper.h
2
hyper.h
@ -2107,7 +2107,7 @@ void fallingMonsterAnimation(cell *c, eMonster m, int id = multi::cpid);
|
|||||||
|
|
||||||
// ranks:
|
// ranks:
|
||||||
enum class PPR {
|
enum class PPR {
|
||||||
ZERO, OUTCIRCLE, MOVESTAR,
|
ZERO, EUCLIDEAN_SKY, OUTCIRCLE, MOVESTAR,
|
||||||
MINUSINF,
|
MINUSINF,
|
||||||
BELOWBOTTOMm,
|
BELOWBOTTOMm,
|
||||||
BELOWBOTTOM,
|
BELOWBOTTOM,
|
||||||
|
Loading…
Reference in New Issue
Block a user