Windows DopeFish - The Big Launch

S

Sam (Deleted User)

Guest
Well if it is based on code that is gpl that makes sense, cant really do anything about that now.
 

IGameArt

Member
It's not a 1 to 1 recoding of the original functions, but they definitely served as inspiration for some of the code I'm using.
 

chamaeleon

Member
It's not a 1 to 1 recoding of the original functions, but they definitely served as inspiration for some of the code I'm using.
Just want to point out that in such a case what you can do becomes much more of a gray area and depending on interpretation of the GPL you might not be able to add a exception clause, and if you can't do that you definitely cannot change it to MIT or anything else. I'm definitely not at all sure what you can and cannot do because I have no idea just what your code shares with the code that inspired it. It all depends on whether your code would be considered a new work that is independent of the inspiration, or whether it would be considered a derivative work, in such case the GPL sticks, with no more or less exceptions than the original work had.
 

IGameArt

Member
Yeah I'm going to be consulting a professional. From what I can assume as a non-law professional, this should be GPL compliant because I'm providing everything needed to compile the project aside from the compiler itself, which is GM in this case. It brings to mind whether or not then projects created through Unity or Unreal could be licensed under GPL, and I'm pretty sure there are GPL projects created in those engines.

Regardless, I've been making steps to improve the performance, however today marks the start of one very big step. I'm going to compile all of the floor and ceiling textures ( which are all 64x64 ) into an atlas to reduce texture swaps. Once this is proven to be successful, I will then move on to doing the same with the wall textures.
 

IGameArt

Member
It has been a busy start to the week so far! I managed to take all of the textures stored in the "required for this level" texture list and comped them all onto an atlas using a modified version of YellowAfterLife's tex-pack algorithm.
Took a hot minute, but reading textures from this instead of doing potentially 10s to 100s of texture swaps per frame. I've got it down to a whopping 2 texture swaps, once for flats and once for walls!

1652235044125.png

I also implemented a feature I've been planning for some time, and that's graphics overrides. Now you can set a global variable, and DopeFish will, instead of loading graphics from a wad, check your assets for one with a matching name and will use that instead. This is great for when you want to use a true color texture instead of one limited to a 256 color palette. Looks quite nice with this Doom 3 for Doom 1 texture replacer. (NOTE: Graphics in your asset browser must follow specific naming conventions, and must be the same size as the graphics from the wad. That may change in the future);

1652234953106.png
 

Joe Ellis

Member
The texture packing's cool, but how do you make them tile? Do you split the geometry or wrap the uvs in the shader?
Also I've been wondering, how does it make the geometry for the floors and ceilings? Does it use some type of bsp triangulation?
 

IGameArt

Member
The texture packing's cool, but how do you make them tile? Do you split the geometry or wrap the uvs in the shader?
Also I've been wondering, how does it make the geometry for the floors and ceilings? Does it use some type of bsp triangulation?
So the tiling is done in a shader using fract. Because of this mipmapping has to be disabled until the glsl update adds the functions required to get ride of the weird seams that appear.

Triangulation is actually really easy because I've taken up a principle of "Don't reinvent the wheel." People have been rendering geometric versions of these maps for a few years now, and at least some of that is because someone out there was smart enough to make a tool that can process a wad file in such a way to break up the sometimes large and complex sectors into smaller, easily triangulatable, convex shapes. DopeFish comes with this tool, plus one other, that add this extra data into the wad to make it so that I can render them easily without having to figure out how to turn complicated sectors, sometimes with holes in them, into convex hulls on my own because trying to figure out that math would give me a headache. :p

I'm currently using glbsp to create these convex hulls, and i'm using glvis to create pvis data that tells me what chunks are visible from every other chunk in the map. This way I only draw what can potentially be seen by the player instead of literally everything everywhere all at once.
 

IGameArt

Member
Bunch of stuff has been did. Let's talk about that.

DF now fully supports Strife textures and levels:
1653132044253.png

Got geometryless skies now loading and rendering. It's a more complex system than you'd think. It involves projecting the texture into a dome shape on a sky surface, then projecting that onto geometry tagged as "is Sky"
1653131990529.png
Also, hud scaling is a thing now.


Still there is much to do. I have to put some more energy into optimization, I have to fix texture alignment issues, and after converting to a texture atlas based system I've introduced a bug where the wrong texture may appear on certain geometry under certain circumstances.

Anydoodle, progress is progress even when there are set backs.
 
Top