#Inferno - Descent Remaster
1226 messages ยท Page 2 of 2 (latest)
So even if you had 10 weapon types, by switching between master modes you would have a coarse grouping to cut down the options
In a real fighter you don't carry that many weapon types but if you had 3 AG weapons (e.g. Mk84, Mk82, AGM65) and 2 AA weapons (AIM120, AIM9), rather than stepping through all 5 weapon types with the MSL STEP button, you'd punch the AG master mode button and then your "cycle weapons" button only goes between 3 options
or 2 in the case of AA
which is much less tedious and hard to remember the sequence than if you had to step through all 5 trying to remember the order
hmm I see, that's an interesting take. I suppose that's not too different to how half life grouped weapons by 'class'
in the vanilla version of the game most players just disable half the weapons and cycle through the ones they do like, as the weapon balance is quite bad.
I'm rebalancing the weapons to each have a niche so it's more of an issue now.
also they grouped weapons on the 1 to 0 keys, pressing the number again would toggle the 'super' version of the weapon.
so I discovered using a non-physical calculation for the light half-angle for fresnel adds highlights that were missing before. second picture is with the 'tweak'
float3 halfAngle = normalize(viewDir - normalize(l));
I just multiply the normalize(l) by 1.5.
maybe my fresnel calc is bad or too simple? I'm just doing fresnel = pow(max(1.0 - dot(halfAngle , viewDir), 0), 5.0);
fresnel did work before, but only at shallow angles. it always felt "wrong" to me though.
hmmm it breaks metal specular highlights though
changing the frenel exponent from 5 to 2 has a similar effect without breaking metal
I think the 2nd pic looks ok?
the 2nd pic is tweaked one
I definitely think my fresnel calc is just garbage. lowering the exponent actually makes metal have visible highlights too
either that or my non-fresnel specular isn't contributing enough
but I have to put a 10x multiplier on regular specular to get the same intensity, which definitely causes issues
lighting is a pain in the ass
my lighting calcs were fucked up for the longest time before I noticed
I'm so far off of 'physical' at this point it's all just made up numbers and multipliers anyway 
add a randomize button ๐
randomize? ๐
to randomize all the numbers and multipliers, like in a character creator of any rpg ๐
that doesn't look energy-conserving at all
the dark or the brighter version?
maybe energy-conserving isn't the right word--i mean that the left one is a lot darker. ideally the left one would have darker highlights, but the highlights would be more spread out (meaning the same total luminance) but that doesn't appear to be the case
I think I get what you mean. unfortunately my ambient lighting is done with vertex colors so it really limits that level of precision. it probably should be darker overall, but that tunnel floor is like.. four polygons and 8 vertices
I'm struggling to come up with a resource system to address resources across the three games. just feels like I've been spinning my wheels for days.
I've got a material system that defines extra properties for each texture (around 3000 for both games). but many of the textures in the second are a duplicate of the first, and I don't want to have to maintain duplicates
the ideal workflow would be to define the base definitions, then merge them with the definitions from the second game
then in the editor you'd need to specify which resource table is actually being edited...
and for a third layer of fun, I need user missions to be able to define their own resource tables on top of the base two
I swear you've asked this before
my suggestion is the same ||mostly cuz I forget why you shot it down in the first place||, basically just a list of files each game needs, then you load up the file and it's basically the resource table
hash map?
I've almost made sense of the layering system UI. it's not the most intuitive but I couldn't think of anything better.
hopefully will have some screenshots in a few days
so I had a user report that weapon fire was lowering the music volume which didn't make any sense to me because I never added such a feature.
I looked into it, and I was passing a range limiter flag to xaudio. apparently this causes implicit normalization too.
after removing the flag I had to adjust the silence levels, but everything sounds a lot more raw and punchy now.
also fixed the music / weapon fire muffling problem
Yeah I'm currently in the process of figuring out the magic of audio mixing
Turns out letting things clip a bit (whether hard clipping or using a compressor/limiter) is sort of an essential part of what we think of as hard hitting audio
You have fucked up recommendations
, mine shows library and some shops
I typed it in as xauido
I'm using xaudio because dxtk helper library comes with a frontend for it. afaik sdl uses xaudio on windows too
someone testing the game out on linux using wine and an integrated gpu, they still get 160 fps
DX12 works well enough on linux I'd say 
second one is way better
it's always fun finding stuff people hid in ancient levels
is there a 69 anywhere nearby
it's level 6 if that counts
ill allow it
between lowering the fresnel exponent and making light falloff smoother, I really like how things look now.
it almost feels dreamlike with the oversaturation and highlights
rt when
rt never lol. there's an RT port and it's quite a mess trying to fight all the artifacts and drawbacks.
This looks as good as rt to me anyway 
the only place that would really benefit from RT is accurate shadow casting of textures from gates and doors.
metal also looks a lot better under RT, but I think proper PBR has a bigger contribution than RT there.
baking light source directions into your vertex data is 10/10, can recommend
why does it look like the uv shifted
I assume that's just a trick of the light (pun intended)
yep it is, that's what happens with normal maps
I'm still in awe at how complex descent's levels are. you just don't see stuff like this anymore.
Pretty.
@primal adder I spent the past two evenings watching people playtest my project. why are there always more bugs ๐ญ
bugs are the only constant, I just found 2 and fixed 1
dont know what causes the other
how are you ever supposed to ship anything when the list of problems just keeps getting longer
I should have taken my own advice and written a virtual file system from the beginning.
I ended up writing all this logic to merge different data sources together and the performance is terrible because it's hitting multiple folders and zip archives for thousands of files
had a remote ... debugging? development? session with a random user yesterday to fix joystick support. I don't have a joystick so I had to give them code to test locally.
they knew how to pull and build the project without any help, still quite the experience
I've gotten a lot of positive feedback on the project structure too. contributors like the mostly free function design with namespaces for organization.
I can't quite place the feeling of reviving levels someone from 1997 made, allowing people to experience them again
sigh, it's never a good feeling when you release an update and users report graphics issues. I barely even change anything.
I hate AMD
all I did was add one new parameter to a shader and it suddenly does this?
ah validation layer found this one at least
nvidia has hackers introducing bugs in amd software 
keep getting all these different feature requests for mod support. custom models, normal generation for custom textures, weapon layering.
I'm glad people are playing, but I've been wanting to add fog for months now ๐ฆ
couldnt people just open up the asset packs and drop in new files?
then again I forget how you did your assets
nah people want to be able to supply custom assets per mission, as well as have 'global' mods that affect all levels.
the original assets are in a packed binary format that I can't modify or redistribute.
fog is 5 minutes. color = color + fog * depth;
depth relative to the camera, tho
it needs to be volumetric fog though
this is the hugest hack of all time: https://ijdykeman.github.io/graphics/simple_fog_shader
I want a simple, fast shader that gives me fog illuminated by point lights. To do this, I created a screen-space effect that achieves the results below. Th...
i tried to implement it, and had some issues with occlusion, but an enclosed space / corridor game should work well
I tried implementing this before and something fundamental about it didn't work for my game. I think it didn't look good when occluded by corners or something like that
yeah, me too, but those screenshots on the blog look insane
i think we talked out this like a year ago
i did have spot lights sorta working (same code just with a cone falloff) and this would make for super cheap "volumetric" headlights, etc
I'm planning on adding quake 3 style volumetric fog. I think I can do it with the following approach:
- create a fog volume mesh from connected segments, omitting the interior faces
- draw the outside of the mesh and linearize it to a depth texture
- draw the inside of the mesh, sampling the depth texture and the depth of the mesh pixel to determine the fog depth
as long as the volumes are convex I think this should work fine
can you not fake volumetric fog using a shader? or does it just not look the same
oh I'm definitely gonna fake it with a shader
I was looking at this yesterday but I was curious, cuz I always thought "volumetric cloud/fog/farts" was just faked with shaders on a plane, just using world space
I'm tired of these mfin shaders on this mfin plane
I still need to add the pass to render the "front" of the volume so the depth is correct
so much imgui 
it's all you need 
does this require edits to user levels?
yeah, designers will need to place the fog manually
fortunately the world is already split into volumes, so it's just a matter of flagging them
exponential fog and added the object fog shader
compression makes it get banding but I promise there's not much ๐ฆ
the enemy bots look like they were ready for a rave
I just need to make the light in the back flicker / strobe
maybe add some lasers ๐
You asked about "dithering" in #wip but I think you are talking about what I would call "banding", which is what you call it here. You asked for suggestions of how to fix it, and it sounds like maybe you are happy with it now with the changes that you've made, but using dithering could be one way to improve this kind of banding. If you want to know more I could find some presentations by Playdead about it.
oops, yeah I meant the banding. I know there's a way to use blue noise to help with it but I don't know the details.
I think what I have is good enough for now though. thanks for the offer
it's probably fine in a game with pixelated art
if anything, lean into it and try to mimic the level's palette
if I was adventurous I would ๐
the third game has terrible fog banding. historically accurate 
how was it implemented?
quite similar to what I'm doing, just without shaders.
they determine the near plane of the fog based on the room portals and then calculate the distance to each vertex in the room from that. then draw transparent faces on top of each solid face.
it's starting to come together
I def. never got to that level
it's level 21! not in the demo
pretty
honestly, I thought the banding/dithering looked better for the type of game, but that's just me
looks sick either way
i'm pretty sure I beat descent 1 and 2 back in the day
trying to tint the fog based on ambient vertex lighting. I think it's a bit more natural? on vs off
I just wish vertex interoplation didn't make those ugly diagonal lines
looks 1,000x better
hmm.. i could probably do this same trick (sample SH for fog color)
wait, that actually works. nice
are SH just fancy ambient lighting probes?
also I just realized I wasn't correcting for srgb on the ambient color. now it's cooking
basically yeah. it's so you can compress an HDRI map (or cubemap capture of the game) into 9 floats (or around there)
sorry, 9 vec3s
neat. kinda wish I had the tech for that, but the vertex based hacks have gotten me far enough.
you can use it with vertex lighting
though may look weird if very low poly
this is the state-of-the-art, no lighting here, this is just ambient
center one ZH3 https://www.activision.com/cdn/research/ZH3-Publication.pdf
though may not work for Decent. You kinda need PBR and IBL pipeline
yeah that's quite a bit fancier than anything I'm going for
could still be useful if you have probes or baked lighting (using the original version)
it would allow objects to go into "shadow" without any real-time lighting
or to capture "fake" lighting like emissive textures
hmm that's quite interesting
it's still used (the last paper is from the latest call of duty) but it was probably in most games before they could do real time on everything
Simple idea, yet extremely effective 
It does sell the fog a lot more, yeah
I'm really happy with how this is turning out
now I wish the overhead lights had light shafts to sell the fog even further... throw some billboards on them and fade when close
this looks insane
such a simple change too
I updated the fog to work on objects by using their ambient light value. fog really makes lava areas feel hotter.
Tha fog lava is hella cool
now you just need to add rain and snow 
I don't want to think about terrain yet 
honestly, adding those floating dust particles would add a ton
are you referring to stationary dust particles some games have?
yes, like there may be 5 or 6 random dust particles floating, but it adds a lot to the illusion of movement
sorry typo, i meant to say "dust"
I like how fog makes it look like the light is diffusing into the room. for such a simple hack it's quite effective for my tech level.
honestly, my engine is just a ton of hacks like this. this is how it looks everything disabled.
if you stack enough hacks it looks like something 
your fog is looking good too, was there a source for this?
not really, I just translated what quake 3 did to a pixel shader
so it's volume based?
yeah. I create a volume mesh, draw the outside to get the "near" distance, then the inside to get the far distance and fill the fog.
okay cool
I still want to try adding some randomness to the fog sampling though. tiling a 3d noise texture aligned to the world maybe? 2D screenspace texture to vary the depth? idk
i think I'm gonna try again with that fog lighting trick to see if I can figure it out
I just have N64 style fog (global depth) which still is better than nothing, but I think with the fake lighting that would work
sampling the ambient light works well, thanks for that
i'm trying my best so that you need very little to no pre-processing or setup (e.g. creating volumes, etc)
how would you determine where the fog is without volumes?
if it's not global of course
for a game light decent/quake you would need to define volumes yeah
i'm working on a probe system (right now it just reads from a single HDRI map) but in theory you could get this from the probe in some automatic way
e.g. you read the sky light, the occlusion, and the general emissive textures, should give you a good ballpark color
Why go for a full pipeline when an estimate does the trick? 
everything is an approximation, even PBR
there are just various levels from "total hack" to "physically plausible"
irradiance is a hack?
that's a debug view that shows only the indirect lighting (no textures). I renamed the button after the video
well this is the most current: #1386209286949965904 message
I'm adding an environment system to group segments together and set various properties like fog and wind.
individually marking segments is usable, but it's tedious and error prone for large areas
environment editor is coming together. implemented basic operations and updated the fog mesh builder.
now I don't have to recreate the fog meshes to change color, which means I'll be able to script them at runtime.
this almost makes me want to drop my entire UI and use imgui
honestly, it's good enough. i researched for a bit and realized it was just the best option
apart from the weird srgb issues there's no real problems with it. it's lightweight and just works
Even passes for doing this 
oh fancy. did you write that spinner yourself?
mhm
Istg I have videos of me messing with the track lengths and note layouts somewhere but I canโt find them
I also actually optimized a lot of the button layouts/rendering so that it does try to render like 1k unseen elements, each containing 7 visual elements
That square selection is broking my mind. How the hell does that work ???
Do you trace a cube along the direction?
I don't think it's color picking along the square... maybe? 
I'm projecting the center of the segment (cube) into screen space and doing a simple rectangle contains test.
Into screen space? Aren't you in screen space when the rectangle is being drawn? Or you draw it in world space and then come back into screen space ?
The result of that is Z sorted I suppose.
the rectangle is screen space yeah
I don't z sort anything for box selections
I just project the center of every segment in the level to screen space when you release the selection. surprisingly it's not slow at all.
I'm surprised it works so well but it's really cool. 
I might try to implement that during a weekend !
originally I got stuck trying to project the selection box into the 3d world, then I realized I could flip it the other way
for single clicks I create a ring buffer based on depth to allow cycling
added support for wind tunnels. pretty simple once you have a physics system, but it's one of the few ways you can constrain movement in 6dof games.
Blake? are you lurking here, or did we independently all come up with this...? https://fxtwitter.com/blakezonca/status/1952156692604719301
still workin on this?
not much these days. work has been busy and I haven't had the energy
been working with someone to make 3D models for the sprite based powerups. they attempt to match the original models the sprites were rendered from.
amazing!!!
so now I'm knee deep in doing system rewrites that won't have any visible changes, things such as:
- adding a new texture management system that uses names instead of magical indices in the game data
- updating the material system to make use of it
- cleaning up some of the mess that the renderer and resource loading has become
- proper virtual file system
all of this was instigated by the weapon models, which are using custom textures not stored in the game files. I hacked them in, but it's made even more of a mess with resource management.
I am super glad I added in an actual material system, even if it is super basic, and adding in a sort of virtual file system was also real helpful (mostly on load, to avoid having to check if a file exists every time)
still trying to sort out my texture loading after switching to D3D12 memory allocator.
but using it has reduced GPU memory usage from around 1200mb to 900mb when loading the average level, due to placed resource alignment.
I might just always create procedural textures as committed resources to bypass the bug I'm seeing, so I can continue working on the rest of the texture resource refactor
well this is progress, and closer to what I would expect for uploading textures
[TextureAllocator.cpp:173] uploaded 420 textures in 100ms
now to load / generate the specular, normal and emissive maps
oh, my fence isn't working properly ๐
I forgot I wrote wrappers for command queues. not too bad still
[33:23.028] [info] [TID:48792] [MaterialLibrary.cpp:746] uploaded 421 textures in 154ms
[33:23.173] [info] [TID:48792] [MaterialLibrary.cpp:746] uploaded 421 textures in 145ms
[33:23.317] [info] [TID:48792] [MaterialLibrary.cpp:746] uploaded 421 textures in 143ms
the texture loading rewrite is making good progress.
mipmap, specular map and normal map generation was quite slow in the old system because it's single threaded.
switching from single threaded to a parallel foreach has sped up texture generation 14x on my machine
now I just need to figure out how to reduce the GPU upload time. it's 0.4s for 1200 textures which isn't terrible, but it's only 30mb of data. feel like it should be almost instant.
I multithreaded the GPU uploads / copies / cmdlist writing and that has addressed it. nearly instant now in release builds
uploaded 1270 textures
read: 0.003s
generated 0.025s mips/spec/norm 1231/418/400
upload time: 0.093s