• 普通的摇晃.ver
  • 波纹+扰动+Alpha.ver
  • 平静的波光粼粼 + 混合纹理.ver

普通的摇晃.ver


Shader "Custom/sd_Water3"
{Properties{_WaterColor("Water Color 水体染色", Color) = (1,1,1,1)_Alpha("Alpha", Range(0,1)) = 0.5_MainTex ("Albedo (RGB) 水面贴图", 2D) = "white" {}_WaveDen("Density of Waves 水波频率",Range(0,1.4)) = 0.8_WaveIts("Intensity of Waves 水波强度",Range(-1, 1)) = 1_WaveSpeed("Speed of Waves", Range(0.1, 80)) = 10}SubShader{Tags { "RenderType"="Transparent""IgnoreProject" = "True""Queue" = "Transparent"}LOD 200Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma surface surf Standard vertex:vert alpha:fade fragment frag#pragma target 3.0sampler2D _MainTex;sampler2D _CameraDepthTexture;//内置变量struct Input{float2 uv_MainTex;};fixed4 _WaterColor;fixed _WaveDen, _WaveIts, _WaveSpeed, _Alpha;UNITY_INSTANCING_BUFFER_START(Props)UNITY_INSTANCING_BUFFER_END(Props)void surf (Input IN, inout SurfaceOutputStandard o){fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _WaterColor;o.Albedo = c.rgb;o.Alpha = _Alpha;}void vert(inout appdata_full v, out Input o){UNITY_INITIALIZE_OUTPUT(Input,o);            float time = _WaveSpeed * _Time;float waveValue = sin(time + v.vertex.x * _WaveDen) * _WaveIts;//偏移量v.vertex.xyz = float3(v.vertex.x, v.vertex.y + waveValue, v.vertex.z);}ENDCG}FallBack "Diffuse"
}

波纹+扰动+Alpha.ver


Shader "HomeworkShader/Water"
{Properties{_MainTint("Tint",Color) = (1,1,1,1)_MainTex ("水纹贴图", 2D) = "white" {}_WaterAlpha("水不透明度",Range(0,1)) = 0.5_ScrollSpeed("贴图滚动速度", Range(0,10)) = 2_NoiseTex("水波噪声贴图",2D) = "white"{}_Amount("噪声影响因子", Range(0,2)) = 1_Frequency("水波频率",Range(0,1.4)) = 0.8_WaveSpeed("水波速度",Range(0.1, 80)) = 10_Amplitude("水波振幅", Range(-1, 1)) = 1_CWaveVal("水环振幅", Range(.01, 20)) = 1}SubShader{Tags { "Queue" = "Transparent""RenderType"="Transparent" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard alpha:fade #pragma vertex vert#pragma target 4.0struct Input{float2 uv_MainTex;float2 uv_StoneTex;float2 uv_NoiseTex;};fixed4 _MainTint;fixed _ScrollSpeed;sampler2D _MainTex;sampler2D _NoiseTex;fixed _WaterAlpha;fixed _Amount;fixed _Frequency;fixed _WaveSpeed;fixed _Amplitude;float _CWaveVal;UNITY_INSTANCING_BUFFER_START(Props)UNITY_INSTANCING_BUFFER_END(Props)void surf (Input IN, inout SurfaceOutputStandard o){//引入贴图fixed2 scrolledUV = IN.uv_MainTex;fixed2 noiseTex = IN.uv_NoiseTex;//流动fixed ScrollValue = _ScrollSpeed * _Time;//非交替定向流动half4 n = tex2D (_NoiseTex,noiseTex) * _Amount;//噪声因子scrolledUV += fixed2(ScrollValue + n.x, ScrollValue + n.y);//x,y方向各自偏移量//圆环旋转float2 center = (0.5, 0.5);//若要中点,注意与平铺值的一半对应;此处平铺为1,1float2 dt = IN.uv_MainTex - center;float len = length(dt);//偏移量float intensity = sin(_SinTime.x * 3) * _CWaveVal;//旋转强度因子float off = len * intensity;//对应uv旋转量float2x2 rot = float2x2(cos(off), -sin(off), sin(off), cos(off));//二维空间旋转矩阵dt = mul(rot, dt) + center;//乘旋转矩阵,加上需要偏移中心的量half4 c = tex2D(_MainTex, dt + scrolledUV);//uv偏移(圆环与流动)//赋值输出o.Albedo = c.rgb * _MainTint;o.Alpha = _WaterAlpha;}void vert(inout appdata_full v, out Input o){UNITY_INITIALIZE_OUTPUT(Input,o);float time = _WaveSpeed * _Time;float waveValue = sin(time + v.vertex.x * _Frequency) * _Amplitude;//偏移量v.vertex.xyz = float3(v.vertex.x, v.vertex.y + waveValue, v.vertex.z);//在y轴附加偏移量}ENDCG}FallBack "Diffuse"
}

平静的波光粼粼 + 混合纹理.ver

其实这一part的混合纹理用的不是很好,水面的高光部分完全可以用白色(颜色)替代。

Shader "Custom/sd_WaterBubble"
{Properties{_RChannelTint("RChannel Tint", Color) = (1,1,1,1)_BlendTex("Blend Channel混合指示图", 2D) = "white"{}_RTex("Red Channel",2D) = ""{}_GTex("Green Channel", 2D) = ""{}_BTex("Blue Channel", 2D) = ""{}_ATex("Alpha Channel",2D) = ""{}_NoiseMap("Noise Map",2D) = ""{}_Alpha("Alpha", Range(0,1)) = 0.5}SubShader{Tags { "RenderType"="Transparent""Queue" = "Transparent""IgnoreProjector" = "True" }LOD 200CGPROGRAM#pragma surface surf Standard alpha:fade#pragma target 4.0sampler2D _BlendTex;sampler2D _RTex;sampler2D _GTex;sampler2D _BTex;sampler2D _ATex;sampler2D _NoiseMap;struct Input{fixed2 uv_BlendTex;fixed2 uv_RTex;fixed2 uv_GTex;fixed2 uv_BTex;fixed2 uv_ATex;fixed2 uv_NoiseMap;};fixed _Alpha;fixed4 _RChannelTint;UNITY_INSTANCING_BUFFER_START(Props)UNITY_INSTANCING_BUFFER_END(Props)void surf (Input IN, inout SurfaceOutputStandard o){fixed2 noiseTex = IN.uv_NoiseMap;fixed ScrollUV = _Time * 3;half4 n = tex2D(_NoiseMap, noiseTex) * 2;ScrollUV += fixed2(ScrollUV + n.x, ScrollUV + n.y);fixed4 blendData = tex2D(_BlendTex, IN.uv_BlendTex + ScrollUV);fixed4 rTex = tex2D(_RTex, IN.uv_RTex);fixed4 gTex = tex2D(_GTex, IN.uv_GTex);fixed4 bTex = tex2D(_BTex, IN.uv_BTex);fixed4 aTex = tex2D(_ATex, IN.uv_ATex) * _RChannelTint;float4 finalColor;finalColor = lerp(rTex, gTex, blendData.g);finalColor = lerp(finalColor, bTex, blendData.b);finalColor = lerp(finalColor, aTex, blendData.a);finalColor = saturate(finalColor);o.Albedo = finalColor.rgb;o.Alpha = _Alpha;}ENDCG}FallBack "Diffuse"
}

Shader攻占笔记(一)水体相关推荐

  1. Shader攻占笔记(九)结课作业小记

    视频链接:Decryption card 解密卡 因为用到的基本上都是前八周的学习内容,不作赘述,逐一简单说说要求对应的画面呈现吧 1.有山有水有角色 2.有静有动有交互 3.顶点片段不能少(Ligh ...

  2. Shader攻占笔记(八)屏幕特效

    屏幕特效 前言 脚本基类 景深效果 脚本部分 着色器部分 碎屏效果 动态模糊 前言 [关于作业的狡辩] 本周内容与前几周相比,难度提高了一些,本章的shader需要配合相应的脚本使用.脚本基本上承担两 ...

  3. Shader攻占笔记(四)卡通着色器

    卡通着色器 卡通光照 描边 -- 全息描边 描边 -- 顶点膨胀描边 沿着法线 在顶点与法线之间抉择 高光改进 卡通光照 课本上介绍的卡通着色器有使用坡度图(ramp map)和直接程序截断两种方法. ...

  4. Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)

    Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...

  5. Unity Shader 学习笔记(3)URP渲染管线带阴影PBR-Shader模板(ASE优化版本)

    此 Shader 已经不是最新版本,最新版本见本专栏的第四篇文章: Unity Shader 学习笔记(4) 材质面板截图: 功能实现(URP渲染管线下): PBR材质.投射和接收阴影. 代码展示: ...

  6. Unity Shader 学习笔记(27)渲染轮廓线(描边)方法、卡通风格渲染、素描风格渲染

    Unity Shader 学习笔记(27)渲染轮廓线(描边)方法.卡通风格渲染.素描风格渲染 参考书籍:<Unity Shader 入门精要> 渲染轮廓线(描边) 五种方法: 基于观察角度 ...

  7. Shader学习笔记(三)学习Shader所需的数学基础

    感受高数 一.笛卡尔坐标系 1.二维笛卡尔坐标系 2.三维笛卡尔坐标系 二.点和矢量 1.矢量和标量的乘法/除法 2.矢量的加法和减法 3.矢量的模 4.单位矢量 5.矢量的点积 6.矢量的叉积(cr ...

  8. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板

    写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...

  9. 【Unity】Unity Shader学习笔记(二)渲染管线

    文章目录 渲染管线(Randering Pipeline) 渲染流程 可编程渲染管线 应用阶段 把数据加载到显存中 设置渲染状态 调用DrawCall 几何阶段.光栅化阶段 渲染管线(Randerin ...

最新文章

  1. cocostudio UI编辑器中UITextField输入框控件光标
  2. 软件测试随手记(转)
  3. python任务调度框架_python任务调度框架apscheduler【转】
  4. JavaWeb 入门篇(1)Maven创建Web项目 Idea配置tomcat
  5. python绘图颜色深浅代表数值_画图理解Python的深浅拷贝
  6. Asp.net MVC3 RTM的源代调试
  7. 8.configurable product
  8. 分享这位的WPF界面设计系列视频
  9. 控制台接收信息转发_微信多群转播能够起到什么作用?微信群聊录制课程语音转发多群怎么操作?...
  10. Macbook 修改照片的大小
  11. burst什么意思_burst是什么意思_burst在线翻译_英语_读音_用法_例句_海词词典
  12. MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置
  13. Python调用华为API进行图像标签
  14. vue单页面背景颜色修改
  15. 计算机毕业设计,java+mysql毕业设计 ,动漫论坛
  16. neo4j的搭建和实例使用
  17. eas显示服务器超时,eas连接服务器超时
  18. 酵母中微量元素螯合物的饲料添加剂及其生产方法
  19. 社群营销的意义和价值
  20. 计算机系统基础实验:数字电路实验

热门文章

  1. Apollo 配置教程以及踩坑总结
  2. 面对“耳鼻喉专科医院营销乏力”的正确做法,快收了它
  3. ofstream文件输出流把二进制数据写入文件
  4. java小区物业管理系统_基于JAVA的小区物业管理系统V0.1(资料4)
  5. 计算机毕业设计django基于python商品比价平台(源码+系统+mysql数据库+Lw文档)
  6. curl get json数据格式
  7. springboot第6集:PO、VO、DAO、BO、DTO、POJO 能分清吗?
  8. 计算机毕业设计ssm礼服定制租赁管理系统6crhq系统+程序+源码+lw+远程部署
  9. Words 2016.12.11
  10. 汇编汇编(MASM debug命令)