July 2010
19 posts
It should probably be noted that I’m not working on this engine for some days. There’s a lot going on and I’m probably going to reformat my main computer, so it may take a while before I can make more progress.
No worries though, everything’s safe.
Anonymous asked: May I please have a link to your svn with your current source code?
1 tag
I think I know why Id Software removed the background tinting from the menu code in the later versions of Quake.
Originally there would be no overbright tones in the color shading map, only darker tones. Plus, the last 16 colors in the palette doesn’t have a regular shading or hue like the others.
So, when dynamic lights are processed, the shading values of the colors of some of the...
I’ve just done some tests in my computer.
With the new reordered palette, the menu background tinting algorithm has been optimized to perform at 65 frames per second at the start of e1m2. With the previous algorithm, the same scene was performing at 54 frames per second.
When the game is simply paused, without the menu background tinting, it performs at 72 frames per second in this...
I’ve just implemented the code to reverse the backwards ranges in the palette upon loading, and… found out that I’ll also have to remap their corresponding color indexes in all 2D and 3D textures upon loading.
Also, an interesting side effect is that the screenshots’ palettes won’t be identical copies of the palette.lmp’s contents anymore, unless I de-reverse...
After thinking it further, I’m going to really finish the work on the color shading maps before moving on to other things, because there already are a number of other non fully implemented solutions in the code. If I allow that trend to continue there will be too many small things to finish before releasing it, and I don’t want to risk forgetting about any of them.
I’m also...
r_brights_staticent is also working perfectly (except for BSP models, which for now are following r_brights_world), so my work on the color shading map is complete, except for the BSP issues mentioned in the previous post. So, time to move on to the automatic generation of color blending maps.
r_brights_world is in, but making external BSP models follow r_brights_staticent or r_brights_entity seems more complicated than I thought.
It seems that there’s absolutely no way to switch the color shading map between different BSP models, because all BSP surfaces are drawn together in a single pass. This means that, at least for now, r_brights_world will affect all BSP models, including...
In the end, I’ve implemented six fullbright color shading workarounds instead of four:
Fully implemented: r_brights_entity r_brights_player r_brights_viewmodel r_brights_beam
r_brights_world isn’t working yet for some reason, I’m trying to figure it out.
And I’m not sure if r_brights_staticent is working; gotta make a custom progs.dat along with a custom map to test it out.
I’ve...
It’s funny the kind of things we learn when trying to do things properly.
While searching for the correct nomenclature of Quake’s “colormap”, I found out that the actual name of the “new” lighting style I’ve implemented in Makaqu is chiaroscuro. As you can see, it’s an artistic lighting style that uses a high range of shading to improve the...
1 tag
There were some difficulties during the coding of the dynamic colormap generator.
First, I suck at math. But despite this, I wanted to make sure that the resulting colormap generated from the regular Quake palette would be identical to the colormap included with Quake, so I searched for the exact algorithm Id Software used to generate colormaps. It turned out that there was source code for it in...
Currently refactoring the palette code.
There was a lot of palette code scattered around several files such as r_misc.c, sv_user.c and view.c. I’ve searched for and moved all its related functions and variables into a new file called palette.c, and searched and moved all function prototypes and external variable definitions to palette.h. Some engines have the habit of renaming functions...
2D clipping should also be implemented, to allow different 2D sprites to get their image contents from different regions of the same image data. The 2D renderer already does this for console characters, but I’m going to make this technique more flexible and expand it to all 2D image types, so I can be able to unify the 2D character rendering with the other 2D sprite rendering routines.
...
Having a consistent GUI across all platforms and display settings makes it easier to design and mantain. The more consistent the GUI is, the better it will achieve these.
Display settings may change in terms of width, height, aspect, color depth, and color mapping.
My first goal is to make the 2D renderer able to integer scale the whole GUI up to roughly the same proportions the GUI would have...
Some of the currently planned improvements on the rendering of 2D GUI sprites:
- Horizontal mirroring, vertical flipping.
- Linear stretching, integer scaling.
- A tiling technique which can be combined with stretching/scaling.
- Support for multiple blending modes, one at a time.
- Merging transparent pixel detection with the blending modes. This could also be done to the 3D renderer, to...
Despite wanting to make a release somewhat soon, the number of wrong things I’m finding in the code keeps increasing.
I’ve added vertical movement to noclip and to the “fly” cheat, so players will be able to freely explore the map when using these modes. However, in these modes the engine still doesn’t detect properly when they move between areas with different...