@froyok@mastodon.gamedev.place
@froyok@mastodon.gamedev.place avatar

froyok

@froyok@mastodon.gamedev.place

Aka Lady Bloom.

Principal Product manager on Substance 3D Painter :substance:, but stay up at night to fiddle with shader stuff.

Speaking French/English.

#gamedev #art #unrealengine #substance #opengl

nobot

This profile is from a federated server and may be incomplete. Browse more on the original instance.

froyok, to random
@froyok@mastodon.gamedev.place avatar

I wanted a copy of GPU Pro 4 in my hand, so I bought one online (and they are pricey nowadays).

Just received it.
It's incorrectly printed. 🫠

It was sent from a small UK shop, I'm surprised they let it pass like that.

I'm sooooo disappointed...

froyok,
@froyok@mastodon.gamedev.place avatar

@GabeMoralesVR Hmm, this will be a last resort option to me because if I can pay the authors I wouldn't mind.

froyok, to random
@froyok@mastodon.gamedev.place avatar

I wonder if anybody tried to use FXAA before doing display mapping BUT by still applying and reverting a curve ? 🤔

Aka:
1 - Switch from HDR to SDR
2 - Apply FXAA
3 - Switch back from SDR to HDR
4 - Apply regular post-process stuff

froyok,
@froyok@mastodon.gamedev.place avatar

Ha, figured out the issue ! I was actually expanding the alpha radius during my fill pass, which created those gaps.

So it's mostly working okay now, trying to adjust how I tweak the focus range to make it easier to play with (I like the idea of a start/stop positions).

froyok,
@froyok@mastodon.gamedev.place avatar

Finally !

Weeks (if not even months) or rework and I can finally render cubemaps.

Pretty happy about it, especially since the cubemap generation side of things took less than a day to write. My refactor worked out really well. :)

Video showing a reflective sphere showing the scene around. In the video the fog settings are toggled on/off to show the dynamic update on the sphere.

froyok,
@froyok@mastodon.gamedev.place avatar

@ataylor Haha yeah, I can imagine. It adds quite a few constraints. I needed to rethink a lot of things. Doesn't help that this is my first real engine. 🤪

froyok,
@froyok@mastodon.gamedev.place avatar

"Ho yeah, I will just use cmgen from Filament to prefilter my cubemap for Radiance"

This was me two days ago.
But cmgen only output either a single ktx file or all the individual mips of a cubemap as separate files.

So now the fun part is figuring out how to stitch everything together to get a working dds file.

froyok,
@froyok@mastodon.gamedev.place avatar

The even funnier part: my framework cannot load dds cubemap file, only individual faces.

This means I need a tool allows me to write a dds with custom mips, so that I produce one file per face, with support for hdr files as input.

I found none. So I'm considering building something myself via my framework, but the best format I can see myself using is RG11B10.

Ideally I should use BC6h, but for that I need an encoder that allows custom mip and HDR files as input.

froyok,
@froyok@mastodon.gamedev.place avatar

I have been banging my head quite a bit the past two days.

I know I'm in corner case, but I'm once again astonished at the lack of good tooling out there for writing in this kind of format.

I would really like avoid writing my own DDS encoder, because I feel it's one of those rabbit holes it will be difficult to get out of. But it's starting to feel like I won't have a lot of options.

froyok,
@froyok@mastodon.gamedev.place avatar

Last silly idea I got: storing my RG11B10 cubemaps in RGBA8 with RGBM compression instead. That will require some on the fly decoding but that's might be tolerable.

froyok,
@froyok@mastodon.gamedev.place avatar

@shram86 It will happen at some point, it's the second time that I end-up facing a wall, but I just don't want to spend the time on it right now unfortunately. Hence my frustration. 😅

froyok,
@froyok@mastodon.gamedev.place avatar

@k_narkowicz Hooo, thx, this looks promising !

froyok,
@froyok@mastodon.gamedev.place avatar

Went with RG11B10 as expected to store my cubemap. Each mip as an individual file stored as a binary blob into a common zip file per probe.
Not the prettiest but it does the job for now. I don't have to deal with RGBM at least.

froyok,
@froyok@mastodon.gamedev.place avatar
froyok,
@froyok@mastodon.gamedev.place avatar

I also had to do the pbr balls test !
No that I only take care of radiance here. There is no IBL irradiance. I will see if I do something for it or not via cubemaps.

froyok,
@froyok@mastodon.gamedev.place avatar

here is what it looks like in my usual scene with the probe pushed in the back. Everything looks grayish because of the neon light in the background.

froyok,
@froyok@mastodon.gamedev.place avatar

I need to rethink how I manage my lights (once again) because right now the light casting shadows are rendered as additive light, which means the IBL contributions is applied several times.

Until now I didn't have a notion of "ambient" lighting.

froyok,
@froyok@mastodon.gamedev.place avatar

Working on my cubemap generation pipeline I was still puzzled on why the IBL would be so strong compared to the actual lights.

I decided to verify that my PBR wasn't broken by using red PBR balls this time and well...

froyok,
@froyok@mastodon.gamedev.place avatar

Took me a day to figure out what was happening.
After checking my code a few times I isolated it out on being related to the DFG LUT.

Inverting its value (one minus) was somehow fixing the shading and brightness issue. This was very confusing.

Then I extracted the LUT from Filament and compared it from Learn OpenGL and mine.

Here is what they look like in Designer:

froyok,
@froyok@mastodon.gamedev.place avatar

Notice what's wrong ?

Filament LUT use swapped Red and Green channels in its LUT.
My initial one minus trick was just a lucky fix. I'm glad I took the time to figure out what was happening.

In their doc, Filament doesn't mention that swap: https://google.github.io/filament/Filament.md.html#table_texturedfg

Anyway, once I figured this out, the fix was immediate and my shiny balls were now looking great:

froyok,
@froyok@mastodon.gamedev.place avatar

So once that was working, I quickly hacked in parallax correction for the cubemap and overriden Sponza floor to be mirror-like.

It now looks really great ! Time to clean up the code and expose everything on the editor side. :D

A looping gif of a camera panning inside Intel's Sponza scene. The floor reflects the pillar and a neon light.

froyok,
@froyok@mastodon.gamedev.place avatar

@frguthmann That's the issue with scary math like that, I'm too afraid to read it properly. :p

froyok,
@froyok@mastodon.gamedev.place avatar

@nick It's pretty fresh and requires specific hardware I believe, it just got introduced in DX12 so I don't know about OpenGL and also my framework would need to support it too which isn't the case yet.
Anyway, BC6h is the ideal target here. :)

froyok,
@froyok@mastodon.gamedev.place avatar

I'm looking at ways to store my shadow volumes resulting binary mask in the form of a bit mask.

The goal is storing something like 32 shadows into an RGBA8 texture to sample it later when rendering object.

Doing so will allow me to render the lit object only once (while doing IBL + casting lights + other lights).

froyok,
@froyok@mastodon.gamedev.place avatar

But today I played again with the idea of mesh based light shafts.
I asked a colleague for help and it got me some convincing results !
This is basic depth evaluation, no analytical formula yet.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • thenastyranch
  • magazineikmin
  • ethstaker
  • khanakhh
  • rosin
  • Youngstown
  • everett
  • slotface
  • ngwrru68w68
  • mdbf
  • GTA5RPClips
  • kavyap
  • DreamBathrooms
  • provamag3
  • cisconetworking
  • cubers
  • Leos
  • InstantRegret
  • Durango
  • tacticalgear
  • tester
  • osvaldo12
  • normalnudes
  • anitta
  • modclub
  • megavids
  • lostlight
  • All magazines