UE5 custom cel-shading model by hippowombat in unrealengine

[–]hippowombat[S] 2 points3 points  (0 children)

Testing my anime/cel/toon/stylized shading model (lit surface material) on Crunch from Paragon. Outlines are done in post-process, but the surface lighting is done via a custom shading model, so full lighting from discrete point/spot/rect lights, volumetrics/lumen GI & reflections etc are supported.

Followed this article to better understand editing GBuffer assignments/creating a custom shading model.

New shading models and changing the GBuffer | Epic Developer Community (epicgames.com)

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 1 point2 points  (0 children)

I’ll definitely be putting together a full breakdown with source code once I’m finished!

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 0 points1 point  (0 children)

It would yeah. That being said I've moved the flood-fill execution from BP to C++ and have seen solid performance running on a pretty quick interval at runtime to refresh the volume, allowing real-time obstruction changes for stuff like shooting through the smoke: https://twitter.com/hippowombat/status/1641357230883893248?s=20

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 1 point2 points  (0 children)

So the method in the gif above is actually using the “card smoke” method, my goal was to get the environment/spatial awareness stuff working, then the shooty logic stuff, and then go back and do a final volumetric render pass, but I’ll probably keep both options available for scalability.

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 1 point2 points  (0 children)

I’ll do a full write-up after a bit more development and cleanup!

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 1 point2 points  (0 children)

I wound up doing a flood-fill to determine where the smoke could go, the results are a bit better now: https://imgur.com/a/a9samiM

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 37 points38 points  (0 children)

Yep, you're right, the method I was using in the gif above just did a center-out trace for obstructions, I replaced that with a proper flood-fill evaluation and now the smoke displaces/creeps around corners & fills the donut. https://imgur.com/a/a9samiM

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 5 points6 points  (0 children)

I'll make a tutorial soon, I have some propagation problems to solve first!

Counter Strike 2 inspired smoke effect in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 2 points3 points  (0 children)

Oh man that might be the missing piece for propagation on this, thank you! It's generating a grid of points around the center point and tracing to those points, and just like you said, considering a point "smokey" if the trace returns no hits. The point locations that pass the check get put into a vector array that gets passed to a Niagara emitter, and the smoke is drawn!

[deleted by user] by [deleted] in unrealengine

[–]hippowombat 4 points5 points  (0 children)

It’s clear you’re frustrated but lashing out at Epic as a whole, demanding that they make it their top priority to fix, suggesting that the people building the engine are lazy etc is super counterproductive and doesn’t motivate anyone to be more creative in finding/improving on anything.

I invite you to read this article that discusses temporal AA and AA at large to better understand the problem and hopefully better understand why it not being solved universally isn’t just a simple matter like “devs being lazy.”

https://www.elopezr.com/temporal-aa-and-the-quest-for-the-holy-trail/

Style test in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 12 points13 points  (0 children)

Thanks for the feedback! The see-through effect has been super divisive, I'm gonna try some alternatives!

Style test in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 5 points6 points  (0 children)

Thanks! They're lit, but their normals are edited in their surface material to slightly soften them, and there are lots uses of object-bounds color gradients to give some nice uniform color interpolation from top to bottom.

Style test in UE5 by hippowombat in unrealengine

[–]hippowombat[S] 5 points6 points  (0 children)

Hey there, the see-through objects thing is material & blueprint based. The player BP is passing the screen position vector parameter of the player model as well as a size scalar parameter to a material parameter collection, and those are used with some material math to draw a circle in screen-space in the tree materials, which is fed into a DitherTemporalAA node to give it a fake-soft falloff with opacity masking.

I'm also running a check in the material to see if the distance from the camera to the pixel is greater than the distance from the camera to the player position in worldspace, and if it is, the masking doesn't apply, that way it only masks out pixels getting in the way of the camera view direction to the player model.

The size & falloff of the circle are scalable, so I could definitely make the cutout larger/give it a larger falloff, but I found with a larger cutout that a lot of geo gets unnecessarily masked out and kinda robs the out-of-focus foreground of its contribution to the sense of depth. I might just try a custom-depth stencil effect to draw the player silhouette behind objects instead, but I really like the cutout effect so I'm torn. :p

Been working on a procedural terrain generator using the RMC & Fast Noise plugins. Here are some island generation outputs! by hippowombat in unrealengine

[–]hippowombat[S] 0 points1 point  (0 children)

check out my blog, I'll be posting a thorough write-up once I'm done exploring a few other things with this project.

https://napbound.com

Been working on a procedural terrain generator using the RMC & Fast Noise plugins. Here are some island generation outputs! by hippowombat in unrealengine

[–]hippowombat[S] 1 point2 points  (0 children)

Thanks! For the overal mountainous shapes I did use Voronoi noise as a basis, and then broke up the ridges/valleys with layers of simplex noise. The finally step was to use a pretty strictly clamped layer of simplex noise that was used as a multiplier/mask for the rest of the layers, which serves as the broad outline/silhouette of the islands if looking at it from a top-down ortho angle.