真Unity3D_分享要给卡通海水Shader入门

假如你有一点编程基础

假如你有一点高中数理化基础

假如你读过“大学”

假如你工作过几年

假如你用过几个月Unity3d

假如你对计算机渲染有兴趣

假如你知道opengl,shader,图形学等

假如你懂得上面这么多。。。。。

你是不用往下看的。。。。。

Shader实战的几件事情

1.颜色抓取器(可判断Shader值)

2.Shader编辑器(不存在的,能.txt写程序最好)

3.快速获取模型和noise等贴图

4.一个靠谱的项目工程

这里,我用了国外的一个“卡通画”工程

0.Camera需要开深度空间:

camera.xxxx =  xxx.Depth;

1.拖几个物件,建立1个小水坑,加上一个水的“平面”物件

2.建立一个空的Unlit Shader,和material,附加到水的“平面”物件

3.Shader,填入

//inside vert struct  //在vert结构声明 写的代码
screenPos: TEXCOORD2

//inside vert shader //再顶点shader部分 写的 
o.screenPos = ComputeScreenPos(o.vertex);

4.然后,再frag shader,写

float existingDepth01 = tex2Dproj(_CameraDepthTexture,UNITY_PROJ_COORD(i.screenPos)).r;
float existingDepthLinear = LinearEyeDepth(existingDepth01);
float depthDifference = existingDepthLinear - i.screenPos.w;

正文从这里开始(这里只是入门和实战,建议按上面步骤操作一次,不用怕,不会很深讲解理论知识,操作到这里,就只会再操作一两步骤,很快完事)

假如,上面的步骤操作正确,你会看到

5.还是,再frag shader

float waterDepthDfference01 = saturate(depthDifference / _DepthMaxDistance);

重点是,一个数再除以一个可以无限大的分量,作用是??

作用就是把1个原来值的最小值,再无限缩小,(0.1 -> 0.01)。计算机图形学,有点意思

 

 

//完整工程,相当于上面的靠谱工程项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值