写在前面:

本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。

由于本人水平有限难免出现错误,还请评论区指出,多多指教。

部分图元和素材来源于网络,如有侵权请联系本人删除。

参考资料与链接会在文章末尾贴出。

=======================================================================

我们根据世界空间坐标(object space亦可)生成棋盘格图案的纹理。

1.

首先是在一维上的,根据世界空间中x坐标生成间条纹。

其实要生成一些procedural images,相当于求一个值,而在数学上有很多种方式,乘法亦可,加法亦可,那么在代码上就不止一种写法,比如下面注释是第二种写法。当然,怎么去写在我们这种小shader中无关大雅,但是在实际项目中,计算效率才是更重要的。

2.

接下来我们继续增加维度。

如果无法理解可以在草稿纸上列出0.0 0.1…3.0 3.1…的计算过程

三维:

我们可以为其加上Scaling

        _Scale ("Pattern Size",Range(0,10)) = 1

            ...

            float4 frag (v2f i) : SV_Target
            {
               float3 adjustedPosWS = floor(i.posWS / _Scale);
               float chessboard = adjustedPosWS.x + adjustedPosWS.y + adjustedPosWS.z;
               chessboard = abs(chessboard % 2);
               //chessboard = frac(chessboard * 0.5);
               //chessboard *= 2;
               return chessboard;
            }

我们还可以为奇数格子和偶数格子分别指定不同的颜色:

原文地址:http://www.cnblogs.com/pisconoob/p/16847500.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性