首页 / UNITY / c# – Unity中的闪烁效果
c# – Unity中的闪烁效果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Unity中的闪烁效果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1513字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试为松树上的纹理添加闪光效果.我尝试使用其他线程中建议的http://developer.amd.com/wordpress/media/2012/10/Shopf-Procedural.pdf(P.22)中的代码.但是我无法将它应用到我的着色器中.
float glitter (float3 pos, float3 viewVec){
float3 fp = frac(0.7 * pos + 9 * snoise3D( pos * 0.04).r + 0.1 * viewVec);
fp *= (1 - fp);
float glitter = saturate(1 - 7 * (fp.x + fp.y + fp.z));
return glitter;
}
void surf (Input IN, inout SurfaceOutputStandard o) {
float glitterValue = (glitter(IN.worldPos, IN.viewDir));
glitterValue = clamp(0.0f, 1.0f, glitterValue);
float2 uv_polar = cartesianToPolarCord(IN.uv_MainTex);
float factor = pow(uv_polar.x * 1.1f, 5.0f);
factor = clamp(0.0f, 1.0f, factor);
factor = lerp(factor, factor * (snoise2D(IN.uv_MainTex * 5.0f) * 0.5f + 0.5f), 0.3);
fixed4 c = lerp(_TreeColor, _SnowColor, factor);
//c = glitterValue;
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
树最初看起来像这样:
现在我希望我的闪光功能的结果在纹理中创造出许多小的白色火花.因此,如果我只使用闪光功能中的值(取消注释c = glitterValue列)作为颜色,树应该变成黑色,带有许多小的白色火花.
但它看起来更像是这样:
我从我的闪光功能中得到错误的值,还是我只是错误地应用它们?
解决方法:
好吧我明白了.问题是我的松树林的规模.这是一个非常小的规模,闪光值通常适用于更大的规模.这意味着我得到的大白点实际上是我想要的闪光,但规模更大.
我通过向worldPos和viewDir添加一个因子来修复它
float glitterValue = (glitter(500*IN.worldPos, 500*IN.viewDir));
您已经可以通过2,5,10或100等因素看到效果.
因此,如果您遇到类似的问题,请尝试不同的值.
内容总结
以上是互联网集市为您收集整理的c# – Unity中的闪烁效果全部内容,希望文章能够帮你解决c# – Unity中的闪烁效果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。