Unity着色器入门之一步一步来看坐标系变换
2015-06-19 18:06
543 查看
1.首先,我们在Unity3D新建一个立方体,Reset一下它的transform组件。这时它的中心的世界坐标为(0,0,0)。共有8个顶点(其实是24个),它们世界坐标为正负0.5
1
2.新建一个脚本文件如下:
3.新建一个Shader,程序如下:
但是按照第2步结果,颜色偏绿才对啊,为什么?
1
2.新建一个脚本文件如下:
using UnityEngine; using System.Collections; public class TestCoordinateTransform : MonoBehaviour { void Start () { Vector3 worldSpace=new Vector3(0.5f,0.5f,-0.5f);//取其中一个顶点世界坐标 Vector3 objSpace=transform.worldToLocalMatrix.MultiplyPoint(worldSpace);//将世界坐标转为模型坐标 print(objSpace);//打印看看 Vector3 viewSpace = Camera.main.worldToCameraMatrix.MultiplyPoint(worldSpace);//将世界坐标转为视坐标 print(viewSpace); Matrix4x4 m=GL.GetGPUProjectionMatrix(Camera.main.projectionMatrix,true);//获取投影矩阵 Vector3 proSpace =m.MultiplyPoint(viewSpace);//将视坐标转为投影坐标 print(proSpace); } }可以看出最后proSpace=(0,-0.1,0)
3.新建一个Shader,程序如下:
Shader "Custom/SolidColor" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 vert(appdata_base v) : POSITION { return mul (UNITY_MATRIX_MVP, v.vertex); } fixed4 frag(float4 sp:SV_POSITION) : SV_Target { return fixed4(sp.xy,0.0,1.0); } ENDCG } } }将这个Shader赋值给那个立方体,结果如下:
但是按照第2步结果,颜色偏绿才对啊,为什么?
相关文章推荐
- Unity下的StreamingAssets路径不同平台的读取
- Unity3D实践系列05,为GameObject添加额外属性
- 关于Fatal Error in GC : Too Many threads
- 解读Unity中的CG编写Shader系列六(漫反射)
- 解读Unity中的CG编写Shader系列五(理论知识)
- 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
- 解读Unity中的CG编写Shader系列三
- 解读Unity中的CG编写Shader系列二
- UnityShader实例04:遮挡透明材质
- 解读Unity中的CG编写Shader系列一
- Unity3d《Shader篇》绘制圆角图片
- Unity arm64
- 基于Unity5.0系统的新打包方式 [第一讲]
- Unity 曲线切线模式 的隐藏枚举 KeyFrame.tangentMode
- Unity中的Path对应各平台中的Path
- UnityShader实例03:边缘光材质
- Unity3D实践系列04, 脚本的生命周期
- 【Unity】Shader编程 基础总结
- Unity remote 连接不上解决方案
- Unity3D实践系列03,使用Visual Studio编写脚本与调试