6.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			6.3 KiB
		
	
	
	
	
	
	
	
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating | 
|---|---|---|---|---|
| ToonShaderModel | 2023-12-18 10:00:34 | ⭐ | 
ToonStandard(Cel打底)
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. 各项异性(defaultLit)3. 各项异性头发 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: 再实现阴影偏移以及阴影羽化效果的基础上。
- PBR:兼容UE默认阴影效果。只能调节阴影过渡颜色。使用的公式为: 
Lighting.Diffuse = DiffuseColor * (1 / PI) * AreaLight.FalloffColor * (Falloff * HalfLambert); - ShadowColorTexture:用于定义ShadowColor(使用贴图指定ShadowColor)
 
ToonLighting:
- PBR:UE默认光照,多光源模式。
 - 仅主光有效:针对cel。
 
Specular
ToonSpecular:
- PBR:UE默认高光效果。
 - 各项异性(defaultLit):UE默认的各向异性高光效果。
 - 各项异性头发 :Kajiya-Kay高光模型。
 - 自定义高光大小与过渡效果:https://zhuanlan.zhihu.com/p/361918341
 - 自定义高光形状贴图:https://zhuanlan.zhihu.com/p/640258070  
891034b3fa/Assets/Shaders/NPR/Cartoon/Stylized%20Highlight%20(Transform).shader#L2 
罪恶装备渲染效果还原
- 原始演讲视频:https://www.bilibili.com/video/BV1Ps411C7mw/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
 - 原始演讲PPT:https://www.ggxrd.com/Motomura_Junya_GuiltyGearXrd.pdf
 - 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)
 - 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)
 - 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇
 - 知乎文章
 
- 其他人的Demo视频,角色胜利动画。
 
贴图
- base:基础色
- rgb:亮面颜色
 - a:basecolor的A通道用于区分脸、身体区域和头发区域。BGT会兜帽内侧与脸都是黑色、头发是灰色;MAY头发是灰色,身体与头是黑色;RAM、JKO身体与头发都是黑色;SOL正脸、头发是黑色,侧脸是白色。
 
 - ShadowMap (SSS)
- rgb:暗面颜色
 - a:?
 
 - ILM
- ilm(R):高光强度 ?高光类型(待验证),根绝高光类型来设置不同的强度数值。
0无高光、无边缘光。为角色的眼睛或者眉毛,有个例外:JKO的头发。(0~50]计算高光?、边缘光。主要的渲染区域,为角色的主要衣服与皮肤。(50~100]贴图绘制高光(ILM.b)、有边缘光。为角色的头发与衣服。(100~150]计算高光、无边缘光。为角色身体上的金属边缘或者刮痕,SOL的武器。(150~200]贴图绘制高光、无边缘光。为角色身体上大部分的金属物件。SOL腰带上的铁环与肩膀处的铁环。(200~255]
 - ilm(G):阴影与高光Offset
 - ilm(B):高光遮罩 ? 高光类型Mask。
- 目前猜测,计算高光,使用数值调整高光大小,类似Roughness;高光Mask直接使用这个Mask。
 0:无高光128:计算高光区域。(128,255]:(128,255) => (0,1) 高光Mask
 - ilm(A):本衬线(基于UV制作,风格化内描边,原理参考先前文章),内描边Mask。
 
 - ilm(R):高光强度 ?高光类型(待验证),根绝高光类型来设置不同的强度数值。
 - detail(texcoord[1]):细节贴图,第二套UV。
 - decal:贴花,单独一个材质。
 - VertexColor
- VertexColor(R):AO
 - VertexColor(G):猜测是轮廓线的PixelDepthOffset,以此解决角色叠在一起可能会出现的问题。
Xrd翻译文章:对应到Camera的距离,轮廓线的在哪个范围膨胀的系数。
 - VertexColor(B):描边粗细,也就是Backface Outline的挤出数值。
- Xrd翻译文章:轮廓线的Z Offset 值
 
 - ~~VertexColor(A)  ~~:不存在
- Xrd翻译文章:轮廓线的粗细系数。0.5是标准,1是最粗,0的话就没有轮廓线。
 
 
 - OLM:皮肤Mask,部分角色RAM、JKO还会包括头发。颜色数值不一定相同(RAM就不同)。
 
边缘光
- 主光的方向不确定,但边缘光的方向是固定的。
 - 使用NoL计算边缘光;不同区域的边缘光使用某个参数控制宽度(估计是裁边)。
 
TODO
- 实现AmbientOcclusion叠加阴影效果。
 - 添加ToonDataAsset 控制是否接受阴影选项。
 - 使用代理Shadow模型来渲染阴影。
 
