Unity3D 渲染物体世界坐标 WorldPosition Shader
2018-01-16 18:39
721 查看
一、场景准备,建立一个简单的场景,一个平板在xz平面,一个红色小圆球代表原点,创建一个半径0.5的小球C位置在(0, 0.5, 0)
二、创建Shader:
Shader中,将物体的世界坐标作为颜色传给fragment shader, Shader代码如下:
三、测试
在编辑界面或者运行界面,沿着小球Local坐标系x, y, z轴拖动小球C,可以看到小球颜色变化。
(由于小球都在xz平面以上,y坐标大于零,初始在(0, 0.5, 0)位置时默认偏绿色,所以后面图片里蓝色、红色都和绿色混合了,说明小球表面上的y坐标值大于0)
小球在世界坐标系下:
沿着+-z轴移动时,变蓝色;
沿着+-x轴移动时,变红色;
沿着+-y轴移动时,变绿色;
二、创建Shader:
Shader中,将物体的世界坐标作为颜色传给fragment shader, Shader代码如下:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Unity Shader Book/Chapter5/SimpleShader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag //add _Color //uniform fixed4 _Color; fixed4 _Color; struct a2v { float4 vertex : POSITION; }; struct v2f { float4 pos : SV_POSITION; float3 color : COLOR0; }; v2f vert(a2v v) { v2f o; o.pos = UnityObjectToClipPos (v.vertex); //这里除法是比例缩放,将世界坐标变换到合适的范围 o.color = mul(_Object2World, v.vertex).xyz /1.0; return o; } float4 frag(v2f i) : SV_Target { // float dis = length(i.color); // return float4(dis, dis, dis, 1.0); //输出灰度时使用 float3 f_color = abs(i.color); return float4(f_color, 1.0); } ENDCG } } }创建一个Material,把Shader绑定到Material;再将Material赋给小球C
三、测试
在编辑界面或者运行界面,沿着小球Local坐标系x, y, z轴拖动小球C,可以看到小球颜色变化。
(由于小球都在xz平面以上,y坐标大于零,初始在(0, 0.5, 0)位置时默认偏绿色,所以后面图片里蓝色、红色都和绿色混合了,说明小球表面上的y坐标值大于0)
小球在世界坐标系下:
沿着+-z轴移动时,变蓝色;
沿着+-x轴移动时,变红色;
沿着+-y轴移动时,变绿色;
相关文章推荐
- unity shader 根据世界坐标,改变物体显示的颜色
- Unity3D【脚本】把一个ui物体,对准世界坐标中的物体,可以实现例如血条等
- [OSG]如何用Shader得到物体的世界坐标
- Unity3D - Shader - 模型、世界、观察、裁剪空间坐标转换
- [OSG]如何用Shader得到物体的世界坐标
- Unity3d shader中Queue 使用渲染队列进行深度排序
- Unity3D中世界坐标转换到NGUI世界坐标
- shader数学基础之顶点法向量从物体坐标系变换到世界坐标系
- 物体坐标to世界坐标
- 详解Unity3D Shader开发之渲染管线
- Unity3D 世界坐标上一个点对应UI上一个点
- Unity3D Shader官方教程翻译Unity3D 的渲染管道
- 【小松教你手游开发】【unity实用技能】控制renderQueue解决NGUI与Unity3D物体渲染顺序问题
- 详解Unity3D Shader开发之渲染管线
- 射线!物体发出射线,且以世界坐标轴的位置发射射线
- 世界坐标物体在屏幕上的方位显示
- Vuforia在Unity中屏幕坐标转世界坐标,并使用lineRender画线,手指画线,选中物体并拖拽
- unity3d 双面渲染shader的编写
- Unity3d shader编程 VertexLit渲染路径
- unity3D中 局部坐标,世界坐标以及屏幕坐标,transform变换坐标以及 变换方向心得