EFMI RabbitFX - Glow FX + Decensor
Skeleton / Component extender fixes and improvemen 2.1 || 4.Ev3
Fixed buffer bleeding when multiple character using the experimental system are on screen
Fixed drawshadow being used wrongly, causing some characters to turn black during their ultimate cutscenes
Performance improvements by removing more copy calls
Updated guide and Pelica demo to reflect changes made to version 3
There are some small changes in resource and commandlist declarations.
I made a small fix script for mods that happened to be made for the EXPERIMENTAL version 2 and below.
I also updated the guide and the Pelica skeleton demo to reflect the new template.
More optimizations + rainmap fix 2.2
Fixed rainmap match
Optimized patterns to help reduce stutters
The fix tool added should fix mods that have body parts that turn black / invisible after game updates.
It requires the EXPERIMENTAL version of RabbitFX to function, please read the FAQ section to understand what it does.
- Description -
Hey everyone!
I hope everyone has been enjoying Endfield so far!
I've been working on this while everyone had been playing the game...
If you've seen the other RabbitFXs for the other games, you might be familiar with what it aims to do, I am still in the middle of porting features over to the EFMI version.
For starters, RabbitFX allows modders to add glowing patterns and effects for their mods!
There is also a decensoring function that allows you to zoom in on your characters to see the really nice Endfield textures.
Finally, there is the stable texture feature. It allows mod makers to set textures for their mods through RabbitFX. I'm not entirely sure how helpful it will be for Endfield, but I made it just in case...
For regular users, simply put the mod into your mods folder and any mod that uses the RabbitFX system will be able to function properly, make sure you give the ReadMe a quick read.
For mod makers or people who wish to use RabbitFX to improve or fix their mods please read on.
- Stable Textures -
This feature has saved the day for Wuthering Waves and almost saved the day for Genshin before being discontinued so I will talk about it first.
You will need to pass the texture resource to RabbitFX and tell it to set the textures for you.
I'm not entirely sure what the final form Endfield mod INIs will look like, so I will provide a general example.
This is what the mod should sort of look like originally.
[TextureOverrideComponent0] hash = xxxx ... ... drawindexinstanced = xxxx, xxxx, xxxx [TextureOverrideDiffuseTexture] hash = xxxx this = ResourceDiffuseTexture [TextureOverrideLightmapTexture] hash = xxxx this = ResourceLightmapTexture [TextureOverrideNormalmapTexture] hash = xxxx this = ResourceNormalmapTexture [TextureOverrideDiscardmapTexture hash = xxxx this = ResourceDiscardmapTexture [TextureOverrideRainmapTexture hash = xxxx this = ResourceRainmapTexture
Through RabbitFX, we no longer need the section texture sections since we can directly pass ResourceDiffuseTexture off to RabbitFX, so this then becomes:
[TextureOverrideComponent0] hash = xxxx ... ... Resource\RabbitFX\Diffuse = ref ResourceDiffuseTexture Resource\RabbitFX\Lightmap = ref ResourceLightmapTexture Resource\RabbitFX\Normalmap = ref ResourceNormalmapTexture Resource\RabbitFX\Discardmap = ref ResourceDiscardmapTexture Resource\RabbitFX\Rainmap = ref ResourceRainmapTexture run = CommandList\RabbitFX\SetTextures drawindexedinstanced = xxxxx, xxxx, xxxx
--IMPORTANT NOTE--
The drawindexedinstanced line might be located inside a [CommandList] instead of a [TextureOverride], it is recommended that you set your textures right before the drawindexedinstanced lines.
With this, you no longer need to use the checktextureoverrides = ps-tX, so you can remove them and gain a little bit of performance back.
-- SIDE NOTE--
As of right now, there is a small mistake in the EFMI export tools that has forgotten to set the VB3 which affects the rainmap being displayed properly, you will need to manually add the line
VB3 = ref VB0
after the line
VB0 = ref ResourceXXX
I have provided a simple demo which turns the main character (f) green for reference.
- GlowFX -
This is the whole reason RabbitFX exists, making things shiny!
This is a little bit more involved as you will need to make the glow pattern.
For this example, let's add glowing lines to the main character's mask.
Here is the texture for the main character's mask.
We need to make a new DDS texture for the Glow Effect texture and turn the letters green and add line patterns to it like so.
We don't really need the underlying texture for it anymore so I usually make it black so I can better differentiate between the Glow Effect texture, but you can choose to skip this step if you want.
Finally, the ALPHA channel of the texture is used as the mask to tell RabbitFX which parts need to glow. The intensity determines how bright each part of the pattern should be, this is what it should look like for our mask example.
And with that, the textures are ready. We just need to pass it to RabbitFX and tell it to run using the following lines:
To pass the Glow Texture to RabbitFX
Resource\RabbitFX\GlowMap = Ref ResourceGlowMap
And to run RabbitFX
Run = CommandList\RabbitFX\Run
For our example, it will look like this.
[TextureOverrideMaskVB]
hash = 18220d55
Resource\RabbitFX\GlowMap = ref ResourceGlowMap
run = CommandList\RabbitFX\run
With that, our mask should be glowing!
Thanks to Sins who has kindly provided us with code that allows us to alter the HSV values, we can set additional values to alter the result of the glow.
Here are the full set of values.
$\RabbitFX\H = Change in hue (degrees) $\RabbitFX\S = Change in saturation $\RabbitFX\V = Change in value $\RabbitFX\Brightness = Increase and decrease glow effect $\RabbitFX\Interpolate = Interpolate between base and altered values
For example, we can increase the glow brightness and turn the glow yellow to better match the MC's color palette by shifting the hue -110 degrees like this.
[TextureOverride1]
hash = 18220d55
Resource\RabbitFX\GlowMap = ref ResourceGlowMap
$\RabbitFX\brightness = 100
$\RabbitFX\H = -110
run = CommandList\RabbitFX\run
And we will have our yellow glowing mask!
- Cutout pattern -
This feature allows you to cut out patterns on your mesh through the use of textures instead of having to do complicated mesh edits!
To do this, you simply need to create a new FXMap texture and set it with RabbitFX as a FXMap resource before the draw command:
Resource\RabbitFX\FXMap = ref ResourceFXMap run = Commandlist\RabbitFX\Run drawindexedinstance = xxxx
For this example, I will cut out the MC's jacket and her legs leaving the word 'Caverabbit' visible.
This is what the texture looks like.
We need to create the pattern in the alpha channel like so.
For illustrative purposes, I will overlay this over the original texture to show you what we are cutting out.
Then we run the command like so:
[TextureOverrideDemo] hash = xxxx Resource\RabbitFX\FXMap = ref ResourceFXMap run = Commandlist\RabbitFX\Run
Important note!
Your drawindexedinstanced line might be in a commandlist instead of a textureoverride, you should always do this right before the drawindexinstanced line!
This then results in the MC looking like this!
This is all you should need to know for now!
Happy modding!
