Skip to content

Fan-made shaders for Unity URP attempting to replicate the shading of Honkai: Star Rail.

License

Notifications You must be signed in to change notification settings

kfmgt4/StarRailNPRShader

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StarRailNPRShader

Important

Please read this file before using the shaders!!!

中文翻译点这里

Fan-made shaders for Unity URP attempting to replicate the shading of Honkai: Star Rail. The shaders are not 100% accurate because this project is not a reverse engineering - what I do is to replicate the in-game looks to the best of my ability.

my wife 1

↑↑↑ My Wife ↑↑↑

my wife 2

↑↑↑ Also My Wife ↑↑↑

our mum

↑↑↑ Our Mum ↑↑↑

Character Shaders

  • Honkai Star Rail/Character/Body
  • Honkai Star Rail/Character/Body (Transparent)
  • Honkai Star Rail/Character/EyeShadow
  • Honkai Star Rail/Character/Face
  • Honkai Star Rail/Character/Hair

The rendering of character takes advantage of MRT whose pass is always executed after UniversalForward. As a result, when it comes to transparent objects, the rendering result may go wrong.

*To maintain this project more easily, I won't rewrite the whole render pipeline. You can do it yourself.

Post-processing

  • Custom bloom using the method shared by Jack He in Unite 2018.

  • Custom ACES tonemapping. The formula is

    $$f(x)=\frac{x(ax+b)}{x(cx+d)+e}$$

    where $a,b,c,d,e$ are all parameters.

Requirements

  • Basic knowledge of anime style rendering!!!
  • Unity >= 2022.3.
  • Universal RP >= 14.0.
  • My ShaderUtilsForSRP package.
  • (Optional) Newtonsoft Json package >= 3.2.1.

Newtonsoft Json is used by a custom editor util called Game Material Inspector which can help us read Material JSON files ripped by a certain tool. To enable that util, add the scripting define symbol PACKAGE_NEWTONSOFT_JSON in player settings after importing Newtonsoft Json package.

Guide

  • Use linear color space instead of gamma.
  • HDR should be enabled.
  • Depth priming must be disabled.
  • Depth texture must be enabled and generated by a depth prepass.
  • Rendering path must be forward currently.
  • Renderer Feature StarRailForward must be added to the renderer.
  • Reset the material after changing its shader.

Recommended post-processing settings

post-processing settings

Working with asset preprocessor

The asset preprocessor can

  • Automatically smooth the normals of character models and store them into tangents.
  • Automatically process textures.

The path patterns of the assets that need preprocessing can be configured in Project Settings/Honkai Star Rail/NPR Shader. The default patterns are designed to align with the naming style of in-game assets.

asset-path-patterns

For MMD models

Some extra steps must be done:

  • Switch Model Type to MMD on each material.

  • Add component SyncMMDHeadBone to the GameObject to which SkinnedMeshRenderer is attached.

    sync-mmd-head-bone

    Now, you can override the direction values of the head bone. Besides, two presets are provided in the context menu of the component.

    sync-mmd-head-bone-ex

Note that MMD models do not contain some detailed information so the final rendering result may not fully meet your expectation.

Rules

In addition to GPL-3.0 license, please give proper credits as well as a link to this repo when redistributing or using my code.

Special thanks

  • miHoYo
  • Related posts on Zhihu
  • Related videos on bilibili
  • °Nya°222

FAQ

Why outlines/rim-lights do not work?

Change the Model Scale at the top of the material.

About

Fan-made shaders for Unity URP attempting to replicate the shading of Honkai: Star Rail.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 39.6%
  • ShaderLab 30.1%
  • HLSL 28.7%
  • Python 1.6%