unity shader,模型显示在NGUI上面并可以scrollview裁剪
来源:互联网 发布:网络电视网络连接不上 编辑:程序博客网 时间:2024/06/13 22:39
模型显示在ui上面
如图显示模型
1设置模型的Layer为ui相机显示的值,这里设置为NGUI
2把模型拉近相机,不要被ui渲染遮挡
3需要放大模型因为NGUI的UIRoot会缩小
有一个问题就是我使用了Scrollview组件我希望ui被裁减时,模型也一起裁剪
自定义裁剪shader
1设置显示范围,超出这个范围就丢弃当前片段
这里我是全局设置一个裁剪范围
public class test : MonoBehaviour { public Transform left; public Transform right; // Use this for initialization void Start () { UnityEngine.Shader.SetGlobalVector("clipRange", new Vector4(left.position.x, left.position.y, right.position.x, right.position.y)); }}
Shader "Unlit/clipModel"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { Cull Back Lighting Off Offset -1, -1 Fog{ Mode Off } ColorMask RGB Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc" sampler2D _MainTex; float4 clipRange;//渲染范围 左上到右下的矩形范围显示 struct appdata_t { float4 vertex : POSITION; half4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : POSITION; half4 color : COLOR; float2 texcoord : TEXCOORD0; float2 worldPos : TEXCOORD1; }; v2f vert(appdata_t v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); o.color = v.color; o.texcoord = v.texcoord; o.worldPos = mul(unity_ObjectToWorld, v.vertex); return o; } half4 frag(v2f IN) : COLOR { half4 col = tex2D(_MainTex, IN.texcoord) * IN.color; float2 factor = float2(0, 0); //判断是否在显示框内 if (IN.worldPos.x >clipRange.x && IN.worldPos.x < clipRange.z) { factor.x = 1; } if (IN.worldPos.y < clipRange.y && IN.worldPos.y > clipRange.w) { factor.y = 1; } //x,y坐标一个出框了就裁剪掉 col.a = min(factor.x, factor.y); clip(col.a < 0.1f ? -1 : 1); return col; } ENDCG } }}
效果出了,还不错
这里我用了,两个位置去定义裁剪范围,不想用的话就用UIScrollView.panel的属性计算裁剪框吧
scrollview.panel.baseClipRegionscrollview.panel.clipOffset
阅读全文
0 0
- unity shader,模型显示在NGUI上面并可以scrollview裁剪
- Unity将模型显示在UI上面
- Unity NGUI灰化Shader
- [Shader]对NGUI的UISprite和UITexture进行裁剪(scrollview + 遮罩)
- 调用系统摄像头拍照,对拍照后的图片进行裁剪和压缩处理,并显示在imageview上面
- Unity-使用Shader裁剪图片
- Unity shader 七 能在Ugui上面使用的顶点动画Shader
- 在web上面显示地图并定位
- Unity之Shader在模型上渲染积雪效果-三
- 【Unity&Shader】NGUI实现图集变灰功能
- Unity-NGUI组件UICenterOnChild使对象在UIDarggablePanel居中显示
- Unity-NGUI组件UICenterOnChild使对象在UIDarggablePanel居中显示
- Unity Shader (二)裁剪(Culling)
- Unity NGUI之ScrollView扩展-1
- Unity NGUI之ScrollView扩展-2
- 【Unity开发】NGUI动态刷新ScrollView
- 【Unity开发】NGUI动态刷新ScrollView
- 模型或NGUI图片变灰shader
- Java作业杨枝11.25/11.26
- 10款强大的开源 Javascript 图表库
- JQuery 对节点数据的遍历
- 内容中的 position : fixed 竟然没相对窗口来定位
- 【安全牛学习笔记】WEBSHELL
- unity shader,模型显示在NGUI上面并可以scrollview裁剪
- PAT乙级1040 有几个PAT
- Android开发中的各种单位的解释 Px (Pixel像素) 也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化(屏幕越大,像素越低,单个像素越大,
- 阿里云备案
- 通过windows报错日志解决电脑蓝屏重启等...问题
- SparkSQL中DataFrame常用API
- 纯dos下安装系统
- 用jspf文件做jsp页面的通用页面头
- CGD小计