unity-shader水中波光照射动物身上的效果
发布日期:2021-05-07 17:59:08
浏览次数:9
分类:技术文章
本文共 1877 字,大约阅读时间需要 6 分钟。
首先要知道,如果想要制作阳光照射到水中动物的效果,我们需要的贴图纹理要有两张,一张是动物的皮肤纹理,另一张是波光的纹理,我是用的是下面的两张贴图纹理
解释一下为什么要是用背景为黑色的波光纹理,因为黑色的RGB值是(0.0,0.0,0.0),这样在两种贴图相叠加的时候不会因为背景颜色的RGB值而发生我们不愿看到的变化,在上一篇博客的基础上
继续添加Shader "Custom/uv_shader"{ Properties { //需要两个纹理,一个是鱼的纹理一个是波光的纹理 _MainTex ("Texture", 2D) = "white" { } _SubTex("Texture", 2D) = "white"{ } } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex;//鱼纹理 sampler2D _SubTex;//波光纹理 float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);//用于将顶点/项链坐标转换成剪裁空间的坐标 o.uv = TRANSFORM_TEX(v.uv, _MainTex);//将坐标转换成真正的uv坐标(在屏幕中的坐标)返回的是uv坐标 return o; } fixed4 frag (v2f i) : SV_Target { float2 uv_offset = float2(0,0); uv_offset.x = _Time.y*0.25;//随着时间的变化,uv_offset的x,y值不断变化 uv_offset.y = _Time.y*0.25; // sample the texture //这种用法仅仅是将两张纹理直接粘合到一起并没有真正的场景意义,我们真正要做的是将两张纹理粘合到一起让后让波光动起来 fixed4 linght_color = tex2D(_SubTex, i.uv+uv_offset);//这样在贴图上寻找的像素点不同,贴上去的也就不同 fixed4 col = tex2D(_MainTex, i.uv) + linght_color;//为什么要选择黑色背景的波光图?,因为黑色的rgb值是0,0,0,添加之后并不改变元贝的颜色 return col; //不断改变uv坐标,这样的化,在贴图上找到的uv像素点就随着时间不同而不同,可以模拟波光在水下动物身上的真是感觉 } ENDCG } }}
相关注释在代码中,不懂可自行查看,最终效果如下
转载地址:https://blog.csdn.net/lfanyize/article/details/104099960 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月18日 22时12分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实战Python:利用Python和PyQt5实现瑞幸咖啡点餐系统
2019-04-27
爬虫:Python爬虫学习笔记之Urllib库
2019-04-27
爬虫:Python爬虫学习笔记之网页解析基础——爬取360导航栏目
2019-04-27
实战Python:利用Python实现基于终端的文本行编辑程序
2019-04-27
Python:学习笔记之PyQt5
2019-04-27
面向对象(Python):学习笔记之封装
2019-04-27
Python:字符串、列表、元组、字典之间的相互转换
2019-04-27
面向对象(Python):学习笔记之私有属性和私有方法
2019-04-27
HTML:表单学习笔记
2019-04-27
C#:$符号和@符号的用法介绍
2019-04-27
C#:常用字符整理自用
2019-04-27
面向对象(Python):学习笔记之继承
2019-04-27
Pannellum:实例之自定义热点信息
2019-04-27
Pannellum:实例之简单热点
2019-04-27
Git:git如何拉取指定分支到本地
2019-04-27
5.2 使用MySQL数据库
2019-04-27
5.3 使用SQLite数据库
2019-04-27
5.4 使用PostgreSQL数据库
2019-04-27
5.5 使用beedb库进行ORM开发
2021-06-30
5.6 NOSQL数据库操作
2021-06-30