negative renderradius disables rendering

Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.

Post a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is OFF
Smilies are ON

Topic review
   

Expand view Topic review: negative renderradius disables rendering

Re: negative renderradius disables rendering

by drfrag » Fri Nov 12, 2021 11:40 am

Graf Zahl wrote:In that case: It's supposed to work like it works now.
xd
Redneckerz wrote:Either way, where was this located on the wiki, or was it changed already?
The wiki needs to be updated.

Re: negative renderradius disables rendering

by Redneckerz » Fri Nov 12, 2021 11:35 am

''It just works''.

Either way, where was this located on the wiki, or was it changed already?

Re: negative renderradius disables rendering

by Graf Zahl » Fri Nov 12, 2021 11:23 am

In that case: It's supposed to work like it works now.

Re: negative renderradius disables rendering

by drfrag » Fri Nov 12, 2021 11:22 am

How it was supposed to work was never clear to me.

Re: negative renderradius disables rendering

by Graf Zahl » Fri Nov 12, 2021 11:07 am

It's not about performance, it's about changing how this works. It's a clear case of "if it ain't broke, don't fix it!"

Re: negative renderradius disables rendering

by drfrag » Fri Nov 12, 2021 10:52 am

That's why i asked, if the performance impact is not big it's not worth changing it. The wiki needs to be updated anyway.
The code is in LZDoom now just in case it enhances performance somehow, seems to work well so far.

Re: negative renderradius disables rendering

by Graf Zahl » Fri Nov 12, 2021 10:34 am

Please leave this thing alone. I won't change how this works.

Re: negative renderradius disables rendering

by drfrag » Fri Nov 12, 2021 8:30 am

I've done a PR but i don't know the performance impact of this thing, at first there were slowdowns but that was the STL version.
https://github.com/coelckers/gzdoom/pull/1506

Re: negative renderradius disables rendering

by drfrag » Thu Nov 11, 2021 11:42 am

I think the old version it's fixed (zero case). If you think it's correct and there's interest i could make a PR, after all it's not a big deal.

Code: Select all

diff --git a/src/p_local.h b/src/p_local.h
index 098c9c4ff3..2f0a311148 100644
--- a/src/p_local.h
+++ b/src/p_local.h
@@ -397,7 +397,7 @@ nodetype *P_AddSecnode(linktype *s, AActor *thing, nodetype *nextnode, nodetype
 template<class nodetype, class linktype>
 nodetype* P_DelSecnode(nodetype *, nodetype *linktype::*head);
 
-msecnode_t *P_CreateSecNodeList(AActor *thing, double radius, msecnode_t *sector_list, msecnode_t *sector_t::*seclisthead);
+msecnode_t *P_CreateSecNodeList(AActor *thing, double radius, msecnode_t *sector_list, msecnode_t *sector_t::*seclisthead, bool restricted = false);
 double	P_GetMoveFactor(const AActor *mo, double *frictionp);	// phares  3/6/98
 double		P_GetFriction(const AActor *mo, double *frictionfactor);
 
diff --git a/src/p_maputl.cpp b/src/p_maputl.cpp
index 053f44c13a..b191902060 100644
--- a/src/p_maputl.cpp
+++ b/src/p_maputl.cpp
@@ -463,7 +463,10 @@ void AActor::LinkToWorld(FLinkContext *ctx, bool spawningmapthing, sector_t *sec
 		// at sector_t->touching_thinglist) are broken. When a node is
 		// added, new sector links are created.
 		touching_sectorlist = P_CreateSecNodeList(this, radius, ctx != nullptr? ctx->sector_list : nullptr, &sector_t::touching_thinglist);	// Attach to thing
-		if (renderradius >= 0) touching_rendersectors = P_CreateSecNodeList(this, MAX(radius, renderradius), ctx != nullptr ? ctx->render_list : nullptr, &sector_t::touching_renderthings);
+		if (renderradius == 0)
+			touching_rendersectors = P_CreateSecNodeList(this, radius, ctx != nullptr ? ctx->render_list : nullptr, &sector_t::touching_renderthings, true);
+		else if (renderradius > 0)
+			touching_rendersectors = P_CreateSecNodeList(this, MAX(radius, renderradius), ctx != nullptr ? ctx->render_list : nullptr, &sector_t::touching_renderthings);
 		else
 		{
 			touching_rendersectors = nullptr;
diff --git a/src/p_secnodes.cpp b/src/p_secnodes.cpp
index b351f0e580..58b1820fc5 100644
--- a/src/p_secnodes.cpp
+++ b/src/p_secnodes.cpp
@@ -219,7 +219,7 @@ void P_DelSeclist(portnode_t *node, portnode_t *FLinePortal::*sechead)
 //
 //=============================================================================
 
-msecnode_t *P_CreateSecNodeList(AActor *thing, double radius, msecnode_t *sector_list, msecnode_t *sector_t::*seclisthead)
+msecnode_t *P_CreateSecNodeList(AActor *thing, double radius, msecnode_t *sector_list, msecnode_t *sector_t::*seclisthead, bool restricted)
 {
 	msecnode_t *node;
 
@@ -239,7 +239,7 @@ msecnode_t *P_CreateSecNodeList(AActor *thing, double radius, msecnode_t *sector
 	FBlockLinesIterator it(box);
 	line_t *ld;
 
-	while ((ld = it.Next()))
+	while (!restricted && (ld = it.Next()))
 	{
 		if (!box.inRange(ld) || box.BoxOnLineSide(ld) != -1)
 			continue;

Re: negative renderradius disables rendering

by drfrag » Wed Nov 10, 2021 1:14 pm

I think you're right and the specification changed but the original implementation did not respect it. Seems the wiki it's based on an older logic?
However i don't see how zero renderradius restricts rendering to the source sector. I think that's not the case since in ZDoom 2.4 software it's pretty obvious that "things receive wrong illumination when they are rendered from different sector."

Re: negative renderradius disables rendering

by drfrag » Wed Nov 10, 2021 12:01 pm

The old code added the thing to its own sector and that part was outside the if (thing->renderradius >= 0) :
https://github.com/coelckers/gzdoom/com ... 2aa14L6675
In the new code to restrict it to the sector of the thing i think i'd need an additional parameter for P_CreateSecNodeList in the else :
https://github.com/coelckers/gzdoom/com ... 57327dR464

Re: negative renderradius disables rendering

by Graf Zahl » Wed Nov 10, 2021 9:48 am

I can't really say. It's just what I got from a quick look.

Re: negative renderradius disables rendering

by drfrag » Wed Nov 10, 2021 9:01 am

For me this was really confusing from the start but that's not what i see here:
viewtopic.php?f=18&t=54718#p964839
As i understand it when it's zero radius was meant to be used the same way to query sectors around the actor.
The 'logic' changed several times too. Well i see that it worked differently before.

Re: negative renderradius disables rendering

by Graf Zahl » Wed Nov 10, 2021 8:23 am

According to the source, render radius 0 restricts it to the source sector, and -1 removes the actor even from its origin sector's render list. Some actors like invisible bridges use this because they can otherwise put a huge drag on that list's performance.

Sounds like a problem on the Wiki.

Re: negative renderradius disables rendering

by Gez » Wed Nov 10, 2021 8:16 am

The old Doom behavior is to just not provide a RenderRadius.

Top