Trooper Dan, on 27 May 2016 - 01:11 AM, said:
So, it seems that icecoldduke became the last person on the forum to discover that Polymost runs a lot faster than Polymer, and is now excited about leveraging Ken's code. This made me wonder about why Plagman didn't do the same thing when developing Polymer in the first place. I thought he must have had a good technical reason. I did some forum searches and wasn't able to turn up anything on that subject. One thing I did find was this:
https://picasaweb.go.../PolymerHistory
It's an album with commentary that Plagman made, showing progress on Polymer, starting in 2006. One thing I gathered from his commentary is that it was a learning experience. I don't think he even considered basing his work on Ken's because he wanted to make a renderer of his own.
I actually had started with Polymost as a base. There were not just one, but several technical reasons that made me reconsider and start over instead. Whether they were good or not is pretty subjective, but I can try to remember what some of the reasoning was at the time:
- We had several maps that had very poor performance in Polymost. I think they were maps with not necessarily huge open spaces, but tons and tons of tiny sectors visible at the same time used for map detail. I didn't want to start with an inherent bottleneck; it's not clear whether any of the iterations of Polymer were ever faster than these cases, (although they probably are with the new bucketing code) but that still seems like valid reasoning, even though the work to actually make it work was never done in a way that's useful to you guys.
- Polymost is awesome at being a BUILD renderer, but very inflexible. I wanted to work without inherent limitations, allowing things like tilted walls, ceiling/floor portals (what is now known as TROR), 6 degrees of freedom, etc. None of these things are possible with the very efficient, but also very targeted algorithm at the core of Polymost.
- Polymost is inflexible for other reasons; I realize it's not too helpful of an argument to a general audience, but the core code isn't easily extended, to put it mildly.
- I wanted to do things that required multiple passes from different viewpoints, like shadow maps. Polymost would have a CPU cost that scales up linearly with the amount of passes, whereas you can leverage the sector triangulation / GPU uploads of geometry that's common to several passes if you do it in a more static way.
I always operated under the assumption that every sector could change at any given point in time. All my iterations on the HSR algorithm were always trying to be provably correct and work in the most degenerate cases, which might have been part of the issue. Doing a Polymost or Classic pass on the CPU in a small buffer for HSR was always an obvious option, but I wasn't happy with it because I wanted to "crack" modern BUILD rendering and never have to chase little quirks and cornercases in obscure user maps. I was intentionally testing it on maps with hallways wrapping over each other, visible portions of larger overlapping sector simultaneously visible, etc. Again, walking folks through my reasoning, not trying to claim Polymer does it "better" because clearly it's full of shortcomings on various axes.