思想
逐像素求法向,然后与整个材质的法向做点积,然后用给定的角度阈值做筛选,将超过角度阈值的像素Opacity置0(不显示)!【产品级慎用!!】
实现
以UE4Decal示例内容为例,在decal材质中添加少许代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/ac30904094c0dc0029687afa5795fe6f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9a19fead8cf8f8a1ad9ec2da641ce865.png)
1. 根据DDX和DDY叉积求得像素位置的法向
2. 拿到材质所附着对象的法向(为什么*-1: 尝试不乘效果是反的^_^)
3. 单位法向点积确定夹角,阈值暂定0.1(≈cos85°)
4. 根据阈值过滤像素,超过角度阈值的Opacity * 0 不显示
效果
![](https://i-blog.csdnimg.cn/blog_migrate/fc79c2cccecae9a7a794492cf0c9da6f.png)