Unity着色器入门之一步一步来看坐标系变换
来源:互联网 发布:windows to go可以 编辑:程序博客网 时间:2024/05/21 06:01
1.首先,我们在Unity3D新建一个立方体,Reset一下它的transform组件。这时它的中心的世界坐标为(0,0,0)。共有8个顶点(其实是24个),它们世界坐标为正负0.5
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步结果,颜色偏绿才对啊,为什么?
0 0
- Unity着色器入门之一步一步来看坐标系变换
- Opengl入门之着色器
- HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
- Unity Shader入门精要 数学基础之齐次坐标系
- 【Shader】Unity着色器训练营(1):入门篇
- Unity创建着色器
- Unity 着色器
- Unity着色器学习
- Unity着色器基础
- 【Unity Shader学习笔记】(一)在表面着色器中控制顶点变换
- Unity着色器之: ShaderLab & Fixed Function shaders
- 【Unity Shaders】学习笔记之固定着色器命令(二)
- 【Unity Shaders】学习笔记之固定着色器命令(二)
- 【Unity Shaders】学习笔记之表面着色器(三)
- 坐标系变换
- 【Unity手册】着色器参考
- Unity Shaders表面着色器
- Unity 简单渐变着色器
- 导入excel时遇到问题汇总
- JavaScript基础二 JS除错与调试、函数、对象、Array对象
- mongoDB 3.0 安全权限访问控制
- 几本书
- linux epoll模型
- Unity着色器入门之一步一步来看坐标系变换
- UVALive 4329--Ping pong+树状数组
- Centos下源码包安装lamp常见的几个小问题
- MT7621A 硬件调试总结---(3)
- QTreeView的使用总结1
- AndroidUI设计之 布局管理器 - 详细解析布局实现
- hdu 1195 双向bfs
- 黑马程序员——Java基础——Collection集合的总结
- vs2012编译caffe