toonshader basic algorithm


HLSL Github

outline ​

根据画风画法,拓展平涂厚涂相关

有线稿(形)与上色部分,应用到3d渲染里面亦是如此(只不过顺序并不对应)

自定义 Gbuffer部分存在贴图里面,本篇文章暂时只用于unity urp相关

unity urp srp

间接光、环境光 ​

sh部分 ​

sh.... 对应引擎?

custom AO ​

手绘

主光 ​

lambort ​

高光 ​

Materials ​

  1. BaseColor 贴图(RGBA,.tga)

    • RGB = 基础色(平涂,不写实)
    • A = 材质 ID(0=金属,1=非金属,≈0.52=非金属默认)
  2. LightMap 贴图(RGBA,.tga)

    • R = AO
    • G = Details(绒毛等相关)
    • B = High(高光,是否被光点亮)
    • A = 金属度(0 or 1 金属,0.5 非金属)

参考sp材质 具需要一张rgba的lightmap贴图(.tga) sp示例 rgba各为灰度 lightmap r: ao ao lightmap g: details(类似绒毛相关)

ligtmap b: high(高光,是否被光点亮) high lightmap a: 金属度体现(0 or 1金属,0.5非金属) 金属程度,

进阶(可选):UV 孤岛整合打包、烘焙。

Painting Recipes(归一化 0.0–1.0) ​

MaterialRGBANotes
Cotton / wool / matte fabric1.0~0.43–0.510.0non-metal (≈0.52)No specular. R 可在褶皱处画暗(AO)
Denim1.0~0.39–0.43~0.06–0.12non-metal阴影略宽,微弱高光
Satin / silk1.0~0.47–0.50~0.24–0.39non-metal宽而柔的高光
Leather~0.90~0.35–0.43~0.35–0.51non-metal高光较窄,过宽调 _SpecularExpon
Latex / PVC1.0~0.501.0non-metal最强非金属高光
Metal1.0~0.501.00 or 1高光被 BaseColor 染色,金属色画在 BaseColor

ramp ​

描边 ​

平滑法线 ​