@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 gamedev
@froyok@mastodon.gamedev.place avatar

Here we go !
My new article is out and in this one I deep dive into the rendering of the game Syndicate: https://www.froyok.fr/blog/2024-01-breakdown-syndicate/

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

It's December 31, I couldn't close this year without posting a new article on my website. ;)

I wanted to write a recap (and some additional thoughts) on all the work I did building my own game engine called "Ombre" over the past year: https://www.froyok.fr/blog/2023-12-ombre-dev-blog-1/

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

Can't sleep tonight. So I decided to get busy with something else for once.

Finally settled on a name for my game engine, so I went to design a logo for it. :)

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

New thread: I'm building my own game engine !

The goal is to support the needs for my custom FPS game project. 😄

Feature set goal:

  • Forward(+) renderer
  • Stencil/Shadow Volumes
  • Portals (with recursion)
  • FXAA and MSAA
  • Oren-Nayar diffuse shading
  • PBR Specular/Gloss workflow
  • Fancy Post-Effects (ex natural Bloom, SSAO)
  • HDR reflections (parallax corrected cubemap) + proxies
  • Blurry glass/window (like Doom 2016)
  • Parallax/Relief mapping + shadow

#gamedev #graphics #gameengine

froyok,
@froyok@mastodon.gamedev.place avatar

Now that all of this is fixed, I started to look into blurry/frosted glass. Mainly inspired by Doom 2016.

I did a first version where I blur the screen image (just after generating the fog for opaque geometry), but it made me realize this wouldn't always work.

I need to blur the screen just before I render a glass, to be sure to capture all the elements behind, including other transparent things (like meshes or particles).

froyok,
@froyok@mastodon.gamedev.place avatar

Yesterday I quickly played around again with the tone curve. This try I tried out a new version of AgX: https://www.shadertoy.com/view/Dt3XDr

It's actually nice, and close to the custom curve I initially was using in my project: the idea is to leave color below a certain threshold untouched (aka non HDR colors) and only tone down anything above.

This one basically applies AgX on bright highlights, so it still suffers from some color skew. Also noticed some clipping/halos around bright sources.

Screenshot of my game engine showing a blue and red light overlapping. Custom curve. Blue light turns purple on its bright highlight.
Screenshot of my game engine showing a blue and red light overlapping. New AgX. Blue light turns purple.
Screenshot of my game engine showing a blue and red light overlapping. Tony McMapFace curve. Blue light stays blue, but general colors are a bit more dull.

froyok, (edited ) to random
@froyok@mastodon.gamedev.place avatar

I finally figured out a way to do a capture of Syndicate ! YESSS ! 😍

EDIT: This is now a thread to present what a found out about the game rendering pipeline. 🧵

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

"Inside Bend: Screen Space Shadows"
Overview and source code of Bend Studio (Days Gone) method for screen space shadowing.
https://www.bendstudio.com/blog/inside-bend-screen-space-shadows/

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

I figure I could do an too.

I'm Froyok / Léna Piquet, and I have been working on Substance Painter for almost 8 years, initially at Allegorithmic and now at Adobe.

In my spare time I play with the Unreal Engine, experiment with shaders and sometimes draw stuff. So it's mostly tech art oriented. :)

From time to time, I write articles on my website, often about Unreal: https://www.froyok.fr/articles.html

Image of a custom bloom and lens-flare effect for the Unreal Engine.
Image of a military character jumping over a fence in an industrial complex demonstrating a custom lens-flare effect.

Image of an animated circuit or electrical effect going down over a character metallic skin.

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

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

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

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

@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

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

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

@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

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.

froyok,
@froyok@mastodon.gamedev.place avatar

A few days have passed and I finally got most of the DOF post-process working !
My hexagonal bokeh works well and is relatively cheap. I even got some nice additional effects like chromatic aberration on the bokeh itself.

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

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

Back on Ombre... and I decided to play again with lens-flares (I know 🤪 ).

This time I wanted to try out the little radial projection trick from John Chapman article (https://john-chapman.github.io/2017/11/05/pseudo-lens-flare.html) to create fake streaks. It's a good start, but I will need to think about how to refine that effect. It looks nice already !

Video of a camera moving around making a point light reflecting on a cube shine and creating lens-flares.

froyok,
@froyok@mastodon.gamedev.place avatar

I couldn't stop at two bloom passes, so I added a third one to fake atmospheric scattering.

So... how much humidity do you want in the air ? 😄

It is based on: https://github.com/OCASM/SSMS
(But I'm planning on improving some things.)

Screenshot of my game engine showing a new fog effect that blurs the image based on a distance in a scene with arches and pillars.
Screenshot of my game engine showing a new fog effect that blurs the image based on a distance in a scene with arches and pillars.

froyok,
@froyok@mastodon.gamedev.place avatar

This week I continued with my fog stuff and added local volumes of analytical fog.

It's going to be quite useful to make moody effects in scenes.

So far I got Sphere and Box shape working, but I'm thinking about doing cones (for spotlights) and maybe cylinders (for dirty liquids container or holograms).

Screenshot of my game engine showing the Sponza scene with a beam of light/fog passing through.

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.

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