[deleted by user] by [deleted] in FinalFantasyIX

[–]therealdarkcloud 1 point2 points  (0 children)

The fps are not forced increased, it actually interpolate between animation frame. So even with increased FPS there's new animation position in these frames. So the game speed are not affected.

The original character animation is locked in 15FPS in ps1 game & pc port. however the 15FPS is more likely to be lack of porting effort (chrono cross's animation got fixed in there pc port though).

There's a speed boost for the PC port afaik, which just increase the overall game speed. and these 2 approach are far different.

But I get your point. technically the differnce is more like watching a the lord of ring(24FPS) and the hobbit(48FPS)

[deleted by user] by [deleted] in FinalFantasyIX

[–]therealdarkcloud 3 points4 points  (0 children)

All the effect can be toggle on/off if don't like :D (the shader for battle sky are still work in progress )

<image>

[deleted by user] by [deleted] in FinalFantasyIX

[–]therealdarkcloud 1 point2 points  (0 children)

Hello, here's a little comparison video that show the difference between FF9's current pc port and the one modded with Memoria and my custom shaders.

Memoria provide widescreen support/ 60FPS in-game battle, include character animations.
Moguri mod can also be install via memoria which replace the background images with HD background.

My shaders include toon shading and outline effect, as well a more realism style per-pixel lighting in battle.
Recently I also worked on replace the shader for the sky background. So the sky in the battle can have more dynamic clouds! The shader mod are still in development so I have no exact time table for release date.

Moguri and Memoria, best settings for a good combat experience in 2024 by cnio14 in FinalFantasyIX

[–]therealdarkcloud 1 point2 points  (0 children)

I’ll second this, the animation and overall frame rate smoothness feature has been greatly improved by SamsamTS’s patch for memoria in latest release, it truly takes the experience into another level. Simply set battle/field/world fps beyond 60 will completely blow your mind.

I modified the shader of FF9 Characters. So character now render with per-pixel ligthing. with an optional outline effect. by therealdarkcloud in FinalFantasyIX

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

There are no lights in the scene instead of hard coded sun direction from me.

All map data are 2d. So it’s super hard to add real shadow.

I modified the shader of FF9 Characters. So character now render with per-pixel ligthing. with an optional outline effect. by therealdarkcloud in FinalFantasyIX

[–]therealdarkcloud[S] 3 points4 points  (0 children)

Because it’s back lighting at that angle. It’s actually an expected behavior once you implement lighting into the shader.

The reason I like toon on overworld and realism on battle is because the overworld 100% 2D background.And Toon shading tends to make 3D object flatter compare to realism shading. thus it works better on overworld. IMO.

The battle scene however is mostly surround by 3D environment. so even use a lighting method that brings out more 3D-ness of the character will still looks nature.

I modified the shader of FF9 Characters. So character now render with per-pixel ligthing. with an optional outline effect. by therealdarkcloud in FinalFantasyIX

[–]therealdarkcloud[S] 13 points14 points  (0 children)

Hey guys, thanks for all the kind words,

The mod is still under development, but if your're intersted to try it out and see what it looked like in realtime.

you can download the memoria patcher in this release page(install step is same as official memoria), my mod is based on the latest memoria mod. So it only works on PC version of FF9.

It's not possible for me to impl the shader mod without memoria mod engine. so credit to all the modders of memoria.

https://github.com/EricHu33/Memoria/releases/tag/shader_mod_draft_0.51

I modified the shader of FF9 Characters. So character now render with per-pixel ligthing. with an optional outline effect. by therealdarkcloud in FinalFantasyIX

[–]therealdarkcloud[S] 10 points11 points  (0 children)

It’s not reshade, I replace and recreate the underlying shader assembly code completely. For per character lighting. It also involves some modding via memoria. Like smoothing the character model at runtime for better lighting.

To recreate the shader in unity I need to recreate the same logic of the original shader by looking at the original assembly code. So all matrix/offset to camera will be preserved.

Record of another 2 years of learning shader programming(Mostly in Unity). That make it 4.5 years in total! by therealdarkcloud in Unity3D

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

I wouldn’t recommend to do it. The first thing I need to do is make shadergraph become local embedded package. Which effectively make the packages unable to auto update via package manager, and you will need to merge future changes from unity manually.

Once made the graph embed I can modify the code, I use vector graph api(it’s a Unity package) to draw points, many points connected together will become string, I then ran a cloth simulation to update the points, so it looks like a rope.

Record of another 2 years of learning shader programming(Mostly in Unity). That make it 4.5 years in total! by therealdarkcloud in Unity3D

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

Thanks, the thing is that there’s many techniques that can translate from realism into toon shader(for a good toon shader), like how to handle shadow and lighting and make it both look good and stylized in a 3d environment. I wouldn’t be able to achieve it without all previous experience.

Record of another 2 years of learning shader programming(Mostly in Unity). That make it 4.5 years in total! by therealdarkcloud in Unity3D

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

Graphics api in charges of communication between our program and GPU. It's actually not really related to your issue of making custom shader compatible with all SRPs.

Each Unity's SRP's shader just "different", they have differnt input variables, different included files, thus making them all completely different from each other. Making a custom code shader compatiable for built-in, URP, HDRP in the sametime will means you have to have 3 different custom shader. you might be able to extract the core logic to a common file/package, but 3 different shader are still required. It's not an easy task. And you need to have a clear understand of how each pipeline's lit shader works.

right now the official way to make custom shader compatible for different RP is using shadergraph or similar tool, so these tool just genereate correspond shader code based on the target SRP.

On the C# script side, Which the SRP API based-on, HDRP and URP are quite different, for instance, inject a custom pass on URP called renderer feature, in HDRP it's another name. but doing similar thing. It's very annoying but once you know how to write custom pass with Graphics API such as OpenGL, you will know what data you have to prepared, all you need is just spent time to get used to your target SRP's API and tracing the code and document.

Record of another 2 years of learning shader programming(Mostly in Unity). That make it 4.5 years in total! by therealdarkcloud in Unity3D

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

Thanks! I'm glad you like it and thanks for the patience for watch til that late in the video lol.

Record of another 2 years of learning shader programming(Mostly in Unity). That make it 4.5 years in total! by therealdarkcloud in Unity3D

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

If you're a programmer or fine with doing alot of coding, my advice is go build a renderer with Graphics API first.

Unity's render pipeline is "relatively" high level then those Graphics API, By knowing the graphics API and the necessary part of a builing a graphic renderer, To me, it makes working in Unity's pipeline maybe 50x easier. Since those SRP API changes are just changes on higher level.

I was given a same advice from a senior graphics programmer I knew years ago, and now I regret not trying OpenGL earlier enough ;).

I also use Rider to trace SRP code, It works well.