3d:: a system for drawing transparent things, with sorting being the responsibility of HR

This commit is contained in:
Zeno Rogue 2019-03-04 18:00:51 +01:00
parent d3f17858e9
commit a2c6a4e8b0
2 changed files with 10 additions and 0 deletions

View File

@ -2090,6 +2090,9 @@ enum class PPR {
MINEMARK, ARROW,
MOBILE_ARROW,
LINE,
// in depth tested models transparent surfaces need to be depth sorted by HyperRogue
// and set to PPR::TRANSPARENT to draw them after all the opaque ones
TRANSPARENT,
// no depth testing for SUPERLINE and above
SUPERLINE, TEXT, CIRCLE,
MAX,
@ -2832,6 +2835,7 @@ struct textureinfo {
struct drawqueueitem {
PPR prio;
color_t color;
int subprio;
virtual void draw() = 0;
virtual void draw_back() {}
virtual void draw_pre() {}

View File

@ -1515,6 +1515,12 @@ void drawqueue() {
< xintval(ap2.V * xpush0(.1));
});
for(PPR p: {PPR::TRANSPARENT})
sort(&ptds[qp0[int(p)]], &ptds[qp[int(p)]],
[] (const unique_ptr<drawqueueitem>& p1, const unique_ptr<drawqueueitem>& p2) {
return p1->subprio > p2->subprio;
});
profile_stop(3);
#if CAP_SDL