So, I’m working on making my game stylized with a Ghibli feel while keeping performance in check. Since I’m using Forward Shading, MSAA, and a procedural forest, I’ve been focusing on lighting, shaders, and asset optimization to get that balance between visuals and performance.
1. Nailing the Ghibli Look
Lighting & Atmosphere
- Using a Directional Light with soft shadows to avoid anything too harsh.
- Cranking up Indirect Lighting Intensity to keep shadows from being too dark.
- Adding Sky Atmosphere + Exponential Height Fog to get that soft, dreamy depth.
- Static objects get lightmass bakes to keep performance smooth.
Stylized Materials & Shaders
- Built a toon-style shader with ramp shading to keep that hand-painted look.
- Using a fresnel effect for rim lighting to give characters and objects some pop.
- Less PBR, more gradient-based shading for that Ghibli softness.
Wind & Grass Animation
- Vertex animation for grass and trees (no skeletal meshes).
- Simple Grass Wind shader instead of physics-based wind for better performance.
- Keeping trees optimized with LOD swaps and limiting heavy wind simulations.
Post-Processing Tweaks
- Soft shadows + a bit of bloom & ambient occlusion for that painterly depth.
- Using a LUT for color grading to match that warm, Ghibli-inspired palette.
2. Optimizing Performance (Without Killing the Look)
Rendering (Forward Shading + MSAA Setup)
- SSR is off (don’t need fancy reflections for this style).
- Lowered shadow cascades and tweaked distances to avoid wasting performance.
- MSAA at 4x (not pushing it to 8x since it eats performance).
- Using dithered LOD transitions so assets don’t pop in too hard.
Texture & Mesh Optimization
- Keeping textures small but detailed where it matters.
- Using texture atlases to cut down draw calls.
- Meshes are low poly, but with stylized normals to keep detail without excess polys.
Foliage Optimization
- Aggressive culling on distant foliage so it’s not rendering stuff that’s barely visible.
- Imposters for background trees instead of full 3D meshes.
- Opaque materials for grass and leaves to avoid overdraw issues.
Blueprint Performance Fixes
- No unnecessary Tick events, everything is event-driven.
- Object pooling for repeated assets (like particles, projectiles, etc.).
3. Keeping the Procedural Forest Optimized
- Using Hierarchical Instanced Static Meshes (HISM) for trees & grass to cut down draw calls.
- Level streaming so it only loads what the player sees instead of keeping the whole map in memory.
- Simple collisions for foliage—no need for complex hitboxes.