欢迎光临散文网 会员登陆 & 注册

第二十一期【ASE练习】子函数与重映射笔记

2022-10-10 23:01 作者:Rxrouya  | 我要投稿

前言

比如我们经常会用到溶解这个算法,但是我们需要在每一个shader里都必须在连一变吗?那很无聊,所以子函数这个东西就出现了,它可以再一个预设里提前准备好,

它可以在任何shader里进行调用,就相当于你写的方程式,提前丢在这,用到这个方程式就让它过来,

软溶解的方程式

就相当于我们提交制作好子函数,然后随便在这里用用就可以了,

子函数如何制作

以后我们可以把我们做的功能,以功能形式划分,都做成子函数,这样的话我们就可以不用在每一个shader里重新制作一遍了,

先做一个软溶解

输出它的RGB的颜色着色通道,

noise图

加1

在加一个0-1

乘以一个-2

以上就是溶解过程

有的图它黑的地方可能是0,白的地方可能是1,1和1比大小的时候,可能会差一点溶解不掉,或者说我们的软边或我们的光边,会差一点溶解不掉,所以这里用一下重映射,

这里有四个输入,老的最小值,老的最大值,新的最小值,新的最大值,

我们把老的0到1的区间,映射到1到0.5区间,

这样的话就没有溶解不掉的问题,这个溶解进程就是0-1表达式明确的,假如是0到1.05是溶解进程的话,那就是表达不明确,为什么是1.05,1.05是干嘛的,我们要向准确的表达溶解进程,我们这可以做一个重映射,让它更好理解,

因为要控制软硬边,我们需要一个光滑阶梯函数

光滑阶梯函数输入之后,我们需要一个数值,设置为0.51到1之间,软硬度的控制,

当溶解进程为0.5的时候

位置为0.51的时候,它是硬边的,1的时候是软边的

在外面公开出来的时候,0.51是硬边的,1是软边的,表达不明确,用重映射

找一个数值作为他的重映射

把这个区间设置成0-1区间,0的时候是硬边,1的时候是软边,我们现在这个0-1的老区间就要映射到0.51到1的区间,这样我们就可以说0的时候是硬边,1的时候是软边,就不会像刚才说的0.51是硬边,1是软边,它这个表达就不是很清楚,

溶解的这张作为A通道乘上主纹理,快捷键V

使用组合通道RGB一连

透明通道一连,我们就得到软溶解的效果,最后输出

我们是把它连完了,我们作为它的子函数我们不能就此停手,继续

这张图我们要在节点里面获取它的输入端,我们要给它指令,要给它赋,

这个是我们作为子节点要调整它的地方,

输入端的名字,为什么要先给大家连着看,因为直接这么连啥都看不见,先核算计算有没有问题,

noise也需要动态的输入,连不上的原因是,左边变量类型是Float,右边的是Tex,所以不一样连不上,

变量类型改为2D纹理,

这样就可以连上了,

这些可以调整在子函数的顺序,

搜我们的子函数,

子函数的input对应的是这里面的

子函数顺序变了,它这个顺序也就变了

它也未必输出是Color

它也可以是其他类型,连上啥就是啥,

是这个纹理对象,


第二十一期【ASE练习】子函数与重映射笔记的评论 (共 条)

分享到微博请遵守国家法律