6.0 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
ToonShaderModel 2023-12-18 10:00:34

ToonStandardCel打底

Diffuse

    //Lighting.Diffuse *= AreaLight.FalloffColor * (Falloff * HalfLambert);  
    //TODO:添加阴影过渡效果。  
    //ToonShadow添加类型1.PBR(只能调整过渡颜色) Lighting.Diffuse = DiffuseColor * (1 / PI) * AreaLight.FalloffColor * (Falloff * HalfLambert); 2.ShadowColorTexture兼容RampTexture效果也就是原神的效果还需要添加ShadowColorIntensity后需要改成曝光相关额东西。Lighting.Diffuse = DiffuseColor * (1 / PI);  
    //ToonLighting添加类型1.PBR多光源模式2.主光有效针对cel。  
//---------------------------------------------------------  
//Specular  
    //ToonSpecular添加类型1.PBR 2. 各项异性defaultLit3. 各项异性头发 4. 自定义高光大小与过渡效果 https://zhuanlan.zhihu.com/p/361918341 5.自定义高光形状贴图 https://zhuanlan.zhihu.com/p/640258070  https://github.com/AnCG7/URPShaderCodeSample/blob/891034b3fa6e838e2b231390755479f0f649f181/Assets/Shaders/NPR/Cartoon/Stylized%20Highlight%20(Transform).shader#L2

ToonShadow 再实现阴影偏移以及阴影羽化效果的基础上。

  1. PBR兼容UE默认阴影效果。只能调节阴影过渡颜色。使用的公式为 Lighting.Diffuse = DiffuseColor * (1 / PI) * AreaLight.FalloffColor * (Falloff * HalfLambert);
  2. ShadowColorTexture用于定义ShadowColor使用贴图指定ShadowColor

ToonLighting

  1. PBRUE默认光照多光源模式。
  2. 仅主光有效针对cel。

Specular

ToonSpecular

  1. PBRUE默认高光效果。
  2. 各项异性defaultLitUE默认的各向异性高光效果。
  3. 各项异性头发 Kajiya-Kay高光模型。
  4. 自定义高光大小与过渡效果:https://zhuanlan.zhihu.com/p/361918341
  5. 自定义高光形状贴图:https://zhuanlan.zhihu.com/p/640258070 891034b3fa/Assets/Shaders/NPR/Cartoon/Stylized%20Highlight%20(Transform).shader#L2

罪恶装备渲染效果还原

  1. 其他人的Demo视频角色胜利动画。
    1. Guraaaa的技术美术作品集

贴图

  • base基础色
    • rgb亮面颜色
    • abasecolor的A通道用于区分脸、身体区域和头发区域。BGT会兜帽内侧与脸都是黑色、头发是灰色MAY头发是灰色身体与头是黑色RAM、JKO身体与头发都是黑色SOL正脸、头发是黑色侧脸是白色。
  • ShadowMap SSS
    • rgb暗面颜色
    • a
  • ILM
    • ilmR:高光强度 高光类型(待验证),根绝高光类型来设置不同的强度数值。
      • 0 无高光、无边缘光。为角色的眼睛或者眉毛有个例外JKO的头发。
      • (0~50] 计算高光?、边缘光。主要的渲染区域,为角色的主要衣服与皮肤。
      • (50~100] 贴图绘制高光ILM.b)、有边缘光。为角色的头发与衣服。
      • (100~150]计算高光、无边缘光。为角色身体上的金属边缘或者刮痕SOL的武器。
      • (150~200]贴图绘制高光、无边缘光。为角色身体上大部分的金属物件。SOL腰带上的铁环与肩膀处的铁环。
      • (200~255]
    • ilmG阴影与高光Offset
    • ilmB高光遮罩 高光类型Mask。
      • 目前猜测计算高光使用数值调整高光大小类似Roughness高光Mask直接使用这个Mask。
      • 0:无高光
      • 128:计算高光区域。
      • (128,255](128,255) => (0,1) 高光Mask
    • ilmA本衬线基于UV制作风格化内描边原理参考先前文章内描边Mask。
  • detailtexcoord[1]细节贴图第二套UV。
  • decal贴花单独一个材质。
  • VertexColor
    • VertexColor(RAO
    • VertexColor(G猜测是轮廓线的PixelDepthOffset以此解决角色叠在一起可能会出现的问题。
      • Xrd翻译文章对应到Camera的距离轮廓线的在哪个范围膨胀的系数。
    • VertexColor(B描边粗细也就是Backface Outline的挤出数值。
      • Xrd翻译文章轮廓线的Z Offset 值
    • ~~VertexColor(A) ~~:不存在
      • Xrd翻译文章轮廓线的粗细系数。0.5是标准1是最粗0的话就没有轮廓线。
  • OLM皮肤Mask部分角色RAM、JKO还会包括头发。颜色数值不一定相同RAM就不同

边缘光

TODO

  • 实现AmbientOcclusion叠加阴影效果。
  • 添加ToonDataAsset 控制是否接受阴影选项。
  • 使用代理Shadow模型来渲染阴影。

UnityChan

蓝色协议

厚涂 ShaderModel通过修改预积分ShaderModel