Unity Shader编程(3)uv操作
2016-03-03 13:04
411 查看
Unity Shader编程(3)uv操作
1、shader示意图
![](http://img.blog.csdn.net/20160303124107125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160303124127406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160303124148870?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、uv常用操作
①缩放
![](http://img.blog.csdn.net/20160303124410730?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160303124425019?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160303124442926?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
②平移
![](http://img.blog.csdn.net/20160303130107009?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
③旋转
![](http://img.blog.csdn.net/20160303130431482?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
====================================================================================
结束。
1、shader示意图
2、uv常用操作
①缩放
Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _scaleX("scaleX",float)=1//X方向 _scaleY("scaleY",float)=1//Y方向 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; float _scaleX; float _scaleY; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { float2 uv = IN.uv_MainTex; uv = uv*float2(1.0/_scaleX,1.0/_scaleY);//缩放 half4 c = tex2D (_MainTex, uv); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
②平移
Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} //_scaleX("scaleX",float)=1//X方向 //_scaleY("scaleY",float)=1//Y方向 _px("px",float) = 0//平移 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; //float _scaleX; //float _scaleY; float _px; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { float2 uv = IN.uv_MainTex; //uv = uv*float2(1.0/_scaleX,1.0/_scaleY);//缩放 uv = uv + float2(_px,0);//平移 half4 c = tex2D (_MainTex, uv); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
③旋转
Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} //_scaleX("scaleX",float)=1//X方向 //_scaleY("scaleY",float)=1//Y方向 //_px("px",float) = 0//平移 _angle("angle",float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; //float _scaleX; //float _scaleY; //float _px; float _angle; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { float2 uv = IN.uv_MainTex; //uv = uv*float2(1.0/_scaleX,1.0/_scaleY);//缩放 //uv = uv + float2(_px,0);//平移 uv =float2((cos(_angle)*uv.x-sin(_angle)*uv.y),(cos(_angle)*uv.y+sin(_angle)*uv.x)); half4 c = tex2D (_MainTex, uv); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
====================================================================================
结束。
相关文章推荐
- Unity3D-启动unity事件,切换平台监听
- Unity热更新之C#反射动态获取类属性及方法
- Unity热更新之C#反射动态获取类属性及方法
- Cg Programming/Unity/Transparency
- unity如何播放父级的父级物体所绑定的动画功能
- 【Unity开发】通过C#读取CSV表,创建并存储到LUA table中
- wiki/Cg Programming/Unity/Cutaways
- 增强现实贺卡项目展示
- [Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小
- Unity-编写插件
- unity音频管理
- unity5.3多线程渲染的坑
- unity3d的四元数 Quaternion
- Unity3D项目之《坦克大战》
- Unity Assets目录下的文件夹用途
- Unity中加入Android项目的Build步骤 .<unity引用Android的jar包><Android对unity做二次开发>
- [Unity3D]蓝港面试题
- Unity3d 换装Avatar系统
- 项目记录25--unity-tolua框架 View02---BasePanel.lua
- Unity3D与android交互---构建android插件