卡通风格树叶渲染方案
CGGraph渲染图形学图形图像技术 12843 4
实名

通过了实名认证的内容创造者

发布于 2021-4-14 13:42:21

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 毒游小行家 于 2021-4-14 13:42 编辑

卡通风格树叶渲染方案

文/雪羽

序言:
一直觉得原神的树看起不错,就研究了下制作方案。最初尝试从dxbc逆向原神的Shader,花费半天时间后放弃,还不如自己随便写个Shader来得快,于是我就随便写了个树叶渲染的Shader。
先上个效果,随意调了2种颜色。由于Shader中完全未用到Vertex Color,因此还可以使用Vertex Color制作一些额外的自定义效果,如渐变幅度更大的彩色,树叶的摇动等。
v2-2607ba3e33ab3232cead49765ba4d1dd_720w.jpg
v2-d283d7e2415e8391111eaf21cc30da01_720w.jpg

模型制作:

使用SpeedTree即可。模型的树叶法线需要特殊处理成球形或半球形,有3种方案。
  • 手动修改所有树叶顶点的法线。
  • 在Maya内使用球形传递法线至树叶。
  • 将所有树叶模型合并为一个Mesh,轴心修改至所有树叶的中心,在Shader中使用Object Space下的Vertex Position作为法线。



贴图:


唯一需要的RGB通道贴图


R:树叶纹理 G:用处未知 B:BlueClip


Shader:

依然只分析重点的片元着色器。
//采样贴图

half4 texColor = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, input.uv);

//将贴图纹理色彩曲线texColor.r翻转至[-1,0],并偏移回[0,1],用于抵消纹理强度。

half texColorReverse = 1 - texColor.r;

//用_TexIntensity控制贴图纹理强度,_TexIntensity为0时完全无纹理,为1时纹理完全显示。

half3 color = saturate(texColorReverse - texColorReverse * _TexIntensity + texColor.r) * _Color.rgb;

//用lambert控制色彩渐变,_ColorLambertFactor控制lambert影响强度

half colorLambert = input.lambert * _ColorLambertFactor + 1 - _ColorLambertFactor;

//随意计算一下颜色

color.b *= colorLambert;

color.g *= colorLambert;

color *= colorLambert * 1.5;

//雾效

color.rgb = MixFog(color.rgb, input.fogCoord);


基本的纹理色彩计算完成,接下来增加一点小细节。
//将colorLambert分为4段或任意段数,再次计算使树叶颜色跟随光照出现层次感。

float BandedStep = 4;

float BandedNL = floor(colorLambert * BandedStep) / BandedStep;

color.rgb *= 1.5 * input.lambert * BandedNL * _ShadowColor;

//计算自阴影,增加一点细节。

float shadowAttenuation = MainLightRealtimeShadow(shadowCoord);

color.rgb *= lerp(1, shadowAttenuation, _ShadowIntensity);


最后增加深度边缘光[1],并用菲涅尔公式进行Mask,BlueClip之后完成。
//增加深度边缘光DepthRim,并用菲涅尔公式进行Mask,消除中间部分不必要的DepthRim。

DepthRim = smoothstep(_RimMaskValue, 1, fresnel) * DepthRim;

color.rgb += DepthRim;

clip(texColor.b - _ClipValue);

注意:由于树叶模型为插片,Depth Pass时必须【Cull Off】,否则会由于叶片背面无深度,出现大面积边缘光。

END



评分

参与人数 3元素币 +30 活跃度 +44 贡献值 +1 展开 理由
元素小行家... + 20 【喜欢】看到这么好的帖如同回到初恋的年代!
元素界王神... + 30 + 12 + 1 【点赞】这很有大网气质!
小小枫 + 12 是大佬没错了

查看全部评分

天若有情天亦老, 人间正道是沧桑。
使用道具 <
不朽琉璃_  发表于 2021-4-14 14:01:36  
2#
感谢分享
回复 收起回复
使用道具
黑银  发表于 2021-6-18 01:17:10  
3#
回复 收起回复
使用道具
dodoro_fz  发表于 2021-10-18 17:02:21  
4#
好好学习天天学习
回复 收起回复
使用道具
as935648939  发表于 2022-2-25 19:42:07  
5#
666666666666
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表