chrysaora ๐ŸŽ's Avatar

chrysaora ๐ŸŽ

@chrysaoravioli.bsky.social

Making whatever, whenever. ๐Ÿ“บ YT โ€ข โ€ข โ€ข https://www.youtube.com/@chrysaoravioli

62 Followers  |  17 Following  |  224 Posts  |  Joined: 13.02.2024  |  2.1322

Latest posts by chrysaoravioli.bsky.social on Bluesky

ใƒˆใƒƒใƒ—ใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆใƒžใƒณใ€Œใ‚ตใƒƒใ‚ซใƒผ้ƒจใฎใ‚ตใƒŽใใ‚“ใ‚’ๅ€’ใ™ๆ›ฒใ€
YouTube video by ใƒˆใƒƒใƒ—ใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆใƒžใƒณ ใƒˆใƒƒใƒ—ใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆใƒžใƒณใ€Œใ‚ตใƒƒใ‚ซใƒผ้ƒจใฎใ‚ตใƒŽใใ‚“ใ‚’ๅ€’ใ™ๆ›ฒใ€

The Song That Kills Sano-kun in the Soccer Club

A couple years ago, I added this to my playlist just because I was caught by surprise by the clipped audio. Finally found the MV and it's exactly as goofy as I expected.

youtu.be/7y-5FICNiLI?...

10.11.2025 23:29 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Demo for Modular and Proxy Paint Actors.

Modular contains a singular visible mesh with a single corresponding collision mesh.

Proxy allows multiple visible meshes correspond to a single collision mesh, useful for large collision meshes where multiple static meshes may be associated with it.

08.11.2025 05:26 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image

Remapped Atlas parameters are sent to the material via Custom Primitive Data.

Before, I was using Dynamic Material Instances but it's a pain to set up the code per material instance. Custom Primitive Data instead only needs one node that applies to every material that shares the same index!

06.11.2025 03:27 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
TOP: Collision mesh, with UVs in Channel 0
BOTTOM: Visible mesh, with paint UVs in Channel 1, transferred from the collision mesh.

TOP: Collision mesh, with UVs in Channel 0 BOTTOM: Visible mesh, with paint UVs in Channel 1, transferred from the collision mesh.

For now, the collision mesh is separate from the visible mesh because Niagara builds the UV map from the collision mesh. Having a combined mesh means creating separate logic that I don't feel like implementing ๐Ÿ˜„

The paint UVs are fairly easy to create thanks to Blender's Data Transfer modifier.

06.11.2025 03:21 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Added support for a "packed" paintable mesh.

If a static mesh is added to the "Visible Mesh" variable, it will automatically create a component to show the added mesh. Perfect for modular paintable actors similar to Splatoon 3's single player campaign.

Will work on detached visible meshes next...

06.11.2025 03:13 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1

Anyways, lots of features I still want to support. With luck, the plugin will be solid and then, I can finally move on to actually prototyping a few gameplay ideas with it.

Progress is slow and incremental but it's kinda wild that I've stuck with learning UE5 since March 2024. It's just too fun.

05.11.2025 04:51 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

My system assumes that collision and static mesh are bundled together, great for modular paintable actors.

But what if it's a large paintable mesh with multiple corresponding Static Meshes? Well, the system just doesn't support it yet. So, I'll be working towards this "sender/receiver" option...

05.11.2025 04:47 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image

Been a while since I've done a UE5 update.

The paint system generally works but I've decided to create a test map that forces me to flesh out various features.

Currently, I'm working on a system where a single paintable collision mesh to distribute painting params to corresponding visible meshes.

05.11.2025 04:38 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Post image

According to Google, you need to watch MMA video in order to learn how to parry in Ninja Gaiden 4.

01.11.2025 20:37 โ€” ๐Ÿ‘ 17    ๐Ÿ” 3    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Video thumbnail

[ #NinjaGaiden4 Tech ]

Dodge Offset causes the final hit of the rapier's YYY combo to bug out. I don't even know if it's some weird root motion or motion warping error but it's neat to see that the hitbox is independent from the animation.

25.10.2025 03:04 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

[ #NinjaGaiden4 Tech ]

Using Dodge Offset, it's possible to infinitely loop between standard and Blood Raven combo strings.

In this example, I am looping between the dual swords' XXXXX string and the Blood Raven XXX string.

25.10.2025 03:02 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

[ #NinjaGaiden4 Tech ]

By using Dodge Offset, you can retain your offset combo even after an Obliteration Technique.

25.10.2025 03:02 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

This can also be combined with other weapons. Since all weapons have a Blood Raven XXY combo, I can loop their finishers.

23.10.2025 16:34 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

Weird Dodge Offset + BloodRaven infinite finisher (like Astral Chain sorta?)

Dual Sword Combo: XXXXY
Blood Raven Combo: XXY

Input Sequence
XXXX (Dual Sword) -> Dodge Offset -> Y (Blood Raven)

Just keeping using Dodge Offset to infinitely loop Blood Raven XXY.

#NinjaGaiden4

23.10.2025 16:33 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Post image Post image Post image

Some more screenshots. Loving the PC version so far.

It'll be pretty interesting to compare this to the Ninja Gaiden 2 Black. I do feel that NG2B's lighting looks "better" but I appreciate that NG4's look is more stable and avoids some of the gathering artifacts that Lumen occasionally has.

22.10.2025 05:17 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Amazon delayed my physical copy for PS5 to Friday so... I guess I'll double dip just this once.

Not usually the biggest PC guy but hey, it looks pretty nice on my ultrawide. Could use a new graphics card though because it's struggling a bit (plus I hate fiddling with settings).

21.10.2025 20:06 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

Hit masking using a single channel is somewhat working! Still a few bugs to work out but it works a majority of the time.

Hit a wall? Then it only affects the surface at that particular angle.

Hit a floor? Then it only affects floors within a certain depth like Splatoon.

19.10.2025 22:39 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Initial wall normalization code created in Material Graph

Initial wall normalization code created in Material Graph

Converted wall normalization code from material graph to HLSL.

Converted wall normalization code from material graph to HLSL.

The resulting floor and wall depth/normal values, packed into a single channel by Niagara!

The resulting floor and wall depth/normal values, packed into a single channel by Niagara!

Hey, actually not too hard!

Converted the entirety of the wall normalization code from the material graph into Niagara using a single HLSL node.

Now, I've got perfectly packed Floor depth values and Wall normals in the alpha channel of my position map. On to depth masking experimentation!

15.10.2025 03:40 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image Post image

[ Niagara Depth Masking ]

Porting over my material graph code into Niagara, piece by piece.

Not too much time tonight. Focused only on code that determines which parts of the paint map are considered floors vs. walls. These outputs will be used later in the script for compositing purposes.

14.10.2025 03:14 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

It might take me a while though...

Day job is starting to lighten up but Ninja Gaiden 4 is also coming out. I'll definitely get sucked up into that since it's a big new Platinum game.

Hopefully by end of the year, I can finally have an acceptable painting solution that I can play around with.

13.10.2025 01:56 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Next, I'll recreate the math seen here in Niagara and then hopefully, can finally begin creating a masking solution.

In this image, I only want the splatter to apply to the wall but it's showing on some undesired locations (wall side & floor). The masking solution should be able to remedy this. 3/๐Ÿงต

13.10.2025 01:53 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

When paint hits a floor, I allow it to be shown in a certain range like Splatoon.

Allowed range is (-65504 <= z < -1) & (1 < z <= 65504). For simplicity, my paintable floors are placed within a range of (100 < z < 65504).

In this example, I'm only showing all floors that are located at 800cm.

2/๐Ÿงต

13.10.2025 01:48 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Packing RGB Normal Map into a single channel so I can potentially halve the compute time for paint splatters.

When a paint splatter hits a wall, the hit angle is from 0 to 360 degrees, which can be normalized to a value from -1 to 1 (think unit circle).

1/๐Ÿงต

13.10.2025 01:36 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Still trying to figure out the exact math to get it to work but the Z-depth works so far. As usual, it's the wall math that's annoying.

As always, the downside of these Sunday night epiphanies is that I have work tomorrow and I really want to just spend all of my time working on this problem.

29.09.2025 02:34 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Testing the crammed normal map information in the Alpha Channel.

Alpha channel value at the example location is 1200, which corresponds to the z-coordinate depth.

Testing the crammed normal map information in the Alpha Channel. Alpha channel value at the example location is 1200, which corresponds to the z-coordinate depth.

The plan is to store normalized wall angles to a range of -1 to 1, while the floor z-height can be a range of 100 to 65504.

So depending on what sort of splatter you have (floor vs. wall), I can just use this single channel for masking and save on both memory (bye extra 64mb RT) and compute time.

29.09.2025 02:32 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image

Had a Sunday night epiphany.

Before, I was doing two texture samples to mask a paint splatter but this doubles the compute time. It'd be nice if I could just use a single texture, so I'm trying to cram the normal map info into the unused alpha channel of my World Position texture.

29.09.2025 02:22 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1

๐Ÿ‡ซ๐Ÿ‡ท Culture shock upon visiting France: damn, so many people still smoke here, donโ€™t they realize how addictive and harmful cigarettes are

๐Ÿ‡บ๐Ÿ‡ธ Culture shock upon returning to the US: holy shit why are children walking around drinking 20oz bottles of soda with 65g of sugar per serving

28.09.2025 00:09 โ€” ๐Ÿ‘ 49    ๐Ÿ” 4    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

This was my first time playing a UE5 game, I'm pretty split on the visuals.

Loved the variety of areas just for studying Lumen, since there's a good mix of shadow and non-shadow casting lights.

But, these sorts of visuals are difficult to parse for navigation. I'm too used to lower fidelity games.

25.09.2025 23:28 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Completed my first playthrough of Ninja Gaiden 2 Black.

Much more enjoyable than Razor's Edge. I was absolutely miserable throughout RE so this was nice to play.

That said, one of the benefits of RE being difficult on Normal was that it made NG2B an absolute cakewalk.

25.09.2025 23:21 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

Last night, I had a wack dream where Bayonetta showed up with a drill like this but the drill tip was made by arranging a bunch of gun barrels together.

It was like a weird gatling gun thing but she could also ride it backwards like a broom while it shot out a bunch bullets.

24.09.2025 20:04 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@chrysaoravioli is following 17 prominent accounts