invent60-Blood_System icon

Blood System

Realistic blood splatter from bullet exit wounds. Animated flying dots, spray, and drip stains. Real penetration detection — armor stops and ricochets produce no splatter.

Last updated a day ago
Total downloads 388
Total rating 0 
Categories Mods
Dependency string invent60-Blood_System-3.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack_H3VR-5.4.1700 icon
BepInEx-BepInExPack_H3VR

BepInEx pack for H3VR. Preconfigured and ready to use.

Preferred version: 5.4.1700

README

Blood System

Mustard everywhere! When a bullet physically exits a sosig, it projects blood from the exit wound onto any surface behind it — walls, floors, other sosigs. Real penetration detection means blunt hits, armored stops, and ricochets produce nothing.

Effects

  • Splash — Raycast-based blood dots projected from the exit wound. Spread pattern sampled from included blood PNGs. Dots scale with distance and stretch along the bullet path.
  • Spray — Quick particle burst at the exit wound. Gib explosions fire a 360° burst with lifetime and velocity scaled to bullet entry speed.

How it works

  • Blunt hit / ricochet / armor stop → no splatter
  • Bullet punches through and continues → splatter on whatever is behind the exit wound
  • Splatter direction and animation speed follow bullet exit speed and direction
  • Segment explosions fire blood in all directions

Config

All settings in F1 (ConfigurationManager) or the .cfg file in BepInEx/config.

Setting Default Description
Enabled true Toggle all blood effects
Lifetime seconds 30 How long splash stains persist
Max rays per shot 3000 Raycasts per penetration event (capped to image pixel count)
Cone half-angle 10 Half-angle in degrees of the splash spread cone
Dot base radius 0.008 Base radius of each splash dot in metres
Range metres 50 Maximum splash cast distance
Projection Mode Animated How dots appear: Animated / Delayed / Immediate
Projection Speed Ratio 2 Bullet speed multiplier for dot travel speed in Animated mode
Projection Speed Bias 10 Flat m/s added to dot travel speed
Dot Max Scale 5 Maximum size multiplier for dots at full range
Dot Scale Range metres 50 Distance at which dots reach maximum size
Gib Ray Count 200 Rays fired on segment explosion

Performance Tips

Splash is the most CPU/GPU intensive effect. If you are dropping frames, apply these fixes in order of impact.

Highest impact

1. Switch Projection Mode to Immediate

The default Animated mode keeps a live particle system running with thousands of in-flight dots. Immediate removes all flight animation — dots appear the instant the bullet exits. This is the single biggest FPS win. No visual difference in stain placement, only the flying animation is removed.

2. Reduce Max rays per shot

Default 3000 is high. Try 1000 or 500. Below ~200 the splatter starts to look sparse. This directly controls how many raycasts happen per shot and how many dot quads build up per second.

Moderate impact

3. Reduce Lifetime seconds

Fewer accumulated stain meshes = fewer draw calls per frame across a long fight. 10–15 seconds keeps the scene looking fresh without piling up hundreds of meshes.

4. Reduce Gib Ray Count

Segment explosions fire rays in 360°. High gib fights (shotguns, explosives, multiple sosigs) multiply this cost fast. Cutting from 200 to 100 helps significantly in those scenarios.

Lower impact

5. Reduce Dot Max Scale

Smaller maximum dot size = less GPU fragment overdraw from large-radius quads at range.

6. Reduce Range metres

Caps the maximum raycast distance. Combined with reduced Max rays per shot, limits the worst-case cost per shot.

Low-end preset

Projection Mode = Immediate, Max rays per shot = 500, Lifetime seconds = 10, Gib Ray Count = 100