Lucifer wrote:Some values, like cycle color, are modified significantly before being passed to openGL, so we take them as integers from 0-15 instead.
Actually they can be 0–65535. 0–15 is just what they were supposed to be.
Lucifer wrote:We'd appreciate serious feedback on what you think, as a third-party extender

, the system should look like. Not necessarily technical, but how would you expect to reasonably be able to input colors?
Probably 0–1 radiance.
Lucifer wrote:OpenGL works best if you pass them in that way. If you don't, some outdated openGL implementations will crash or something else really nasty.
GLU does it, not OpenGL. From what I know, an implementation of any GLU version should do it.
Lucifer wrote:That's not really a problem anymore, but openGL will still run fastest if you pass them in that way.
It will only affect loading time, not actual rendering, compared to passing an image that has been pre-scaled to the nearest power of two.
aeralure wrote:What's the preferred PNG file format and variables required, if any?
The smallest that is lossless/acceptable. For instance, my avatar has only 5 different grays (black, white, two gray levels at the sides and one in the corner) that don't match the grays of a low bit depth, and 8-bit precision is fine, so I made it 2^ceil(log2(log2(5)))=4-bit indexed. 8-bit gray might also work well depending on compression, but it's obvious that per-pixel RGB (PNG palette entries are always RGB, but it might still save space) or an alpha channel is a waste.
Lucifer wrote:It might be a difference in perception. For textures that are attached with a player, they get modified internally based on the player's color. I don't recall exactly how the algorithm works, but it's something to do with the more whiteness in the texture, the more of the player's color gets put in. So if you put straight red on the texture, it won't come out red at all when blended with the player's color, unless the player's color is white, I think.
It just draws it on top of the cycle color, utilizing the alpha channel for transparency. How did you arrive at whiteness?
Lucifer wrote:The grid floor is just stacked first one way, then another, tiled horizontally each time, which is what makes the grid shape. Same here, the whiter the color on the texture, the more of the floor color gets put in.
The dual texture floor is pretty unusual, but doesn't depend on 'whiteness'. Off the top of my head, it draws floor_a first with standard alpha blending (glColor alpha is 1-FLOOR_MIRROR_INT), then draws floor_b on top of it without multiplying the framebuffer with 1-alpha.
Lucifer wrote:rim_wall doesn't get reinterpreted like this at all, …
Only the cycle textures are preprocessed. It might seem like the cycle walls are also preprocessed, but they're just multiplied with the color when they're drawn.