UnityShader之纹理贴图滚动实现(修改UV坐标)
2017-03-26 21:30
816 查看
刚打了一把彩虹6,被情景模式虐了 /(ㄒoㄒ)/
OK,物体的表面实现滚动纹理,这个技术可以用来做瀑布,河流,当然配合其他的复杂计算可以实现复杂的效果,这里只说简单的
其实思路很简单
1.不改光照,就一个主纹理,通过_Time方法,实现实时运行
2.获取UV坐标
3.UV坐标与实时变换叠加,最后apply输出
这个还是挺简单的,还不知道怎么上传GIF,今天也不想弄了,有没有大哥带我玩彩虹6呢/(ㄒoㄒ)/~~(心里苦)
OK,物体的表面实现滚动纹理,这个技术可以用来做瀑布,河流,当然配合其他的复杂计算可以实现复杂的效果,这里只说简单的
其实思路很简单
1.不改光照,就一个主纹理,通过_Time方法,实现实时运行
2.获取UV坐标
3.UV坐标与实时变换叠加,最后apply输出
Shader "CookbookShaders/Chapter02/ScrollingUVs" { Properties { _MainTint ("Diffuse Tint", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} //控制纹理滚动的速度,初始值设为 _ScrollXSpeed ("X Scroll Speed", Range(0, 10)) = 2 _ScrollYSpeed ("Y Scroll Speed", Range(0, 10)) = 2 } SubShader { //指定shader渲染非透明物体,为什么就不说了,前几篇提到了 Tags { "RenderType"="Opaque" } LOD 200 //CG代码块 CGPROGRAM //编译指令,定义表面着色器,和将要使用的光照模型Lambert(漫反射) #pragma surface surf Lambert //声明属性关联 fixed4 _MainTint; fixed _ScrollXSpeed; fixed _ScrollYSpeed; sampler2D _MainTex; //表面着色器输入结构体 struct Input { //主纹理的UV坐标值 //当获取到uv坐标值后,便可以通过修改在纹理上的uv坐标实现纹理滚动 float2 uv_MainTex; }; //表面着色器 使用了标准输出结构 void surf (Input IN, inout SurfaceOutput o) { //创建单独的变量储存uv坐标 //最后我们会将新的变量传递给tex2D函数 fixed2 scrolledUV = IN.uv_MainTex; //创建变量,单独储存x,y方向上的滚动速度 //也就是说单位时间内,uv在x方向上的偏移量为_ScrollXSpeed * _Time //y同理 fixed xScrollValue = _ScrollXSpeed * _Time; fixed yScrollValue = _ScrollYSpeed * _Time; //应用最终的uv坐标偏移量 scrolledUV += fixed2(xScrollValue, yScrollValue); //将变换后的uv坐标应用到纹理中 half4 c = tex2D (_MainTex, scrolledUV); //为什么乘以_MainTint呢?大家写出来,调下_MainTint的颜色就知道了 o.Albedo = c.rgb * _MainTint; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
这个还是挺简单的,还不知道怎么上传GIF,今天也不想弄了,有没有大哥带我玩彩虹6呢/(ㄒoㄒ)/~~(心里苦)
相关文章推荐
- Unity Shaders and Effects Cookbook (2-1) 修改 UV 坐标实现纹理贴图的滚动 模拟水流效果
- Unity Shaders and Effects Cookbook (2-2) 修改 UV 坐标实现 帧动画
- Unity3D ShaderLab <六>通过改变纹理的UV坐标实现简单的水流效果
- 一些通过uv纹理坐标实现的简单shader(一)
- 一些通过uv纹理坐标实现的简单shader(二)
- uv纹理坐标设定与贴图规则
- <Shader>简单的纹理坐标滚动(水波模型:脚本控制)
- Shader学习 基于vert/frag顶点片段级的纹理采样 光照贴图实现
- unity 贴图材质的调整-uv通道修改
- Unity Shader 基础(4) 由深度纹理重建坐标
- uv纹理坐标设定与贴图规则
- uv纹理坐标设定与贴图规则
- 通过改变纹理的UV坐标实现简单的水流效果
- shader学习基础之五(详解uv坐标,c#类似uv坐标的值以及贴图操作)
- 【Unity Shaders】Using Textures for Effects——通过修改UV坐标来滚动textures
- uv纹理坐标设定与贴图规则
- unity实现单张纹理贴图的3种方法
- osg使用shader动态修改纹理坐标
- uv纹理坐标设定与贴图规则
- D3D实现BitBlt 截取贴图 UV纹理寻址方式