- 博客(7)
- 资源 (9)
- 收藏
- 关注
原创 Unity3D离屏渲染指定UGUI窗口的
目前项目中,需要增加截图分享的功能, unity3d中截图的方式有两种,直接截屏和截取摄像机。 但是需要是,只需要截取某个ugui界面中的一部分,然后和背景logo图做叠加。就是做到,看到的效果图和实际分享出去的图片是有一些不一样的。 如果直接才用截屏的方式,然后从中扣取需要的部分,然后叠加在背景图上。这样方式也是可以的。但是如果扣取部分是半透明的话,就会有下面的效果。 这样的效果
2016-09-30 15:25:13 3074 2
原创 U3D 数学--Transform 分析
反编译的U3D 的Transform 的源码,研究了下里面的关于数学的一些借口, 发现有两个函数的实现有 性能问题。 如图 当relativeTo=Space.Self 的时候,其实直接改成 this.localPosition += translation; 接可以了。 其实底层存的应该都是localPosition. 即使算出了worldposition最终底层还是需要转换为loca...
2016-09-21 10:28:59 973
原创 Unity3D 神奇的GetGPUProjectionMatrix函数
UnityEngine.GL 中有一个函数GetGPUProjectionMatrix 具体可以参考官方说明文档。 这函数的作用,是用来处理DX 和OpenGL的坐标差异性的。 DX是以左上角为(0,0) OpenGL是以右下角为(0,0) 。 DX的Z范围是(0,1) GL是(-1,1)。 所以,unity3d引擎渲染的时候,根据使用的不同渲染器,通过该函数处理,即可,统一DX 和GL
2016-09-13 11:31:46 6960 1
原创 U3D着色器源码分析
最近在看u3d 5.3.3着色器的源码,这里先简单的分析下UnityShaderVariables.cginc 中 UnityLighting的_WorldSpaceLightPos0的值是怎么获取的。 CBUFFER_START(UnityLighting) //光照的参数 //_WorldSpaceLightPos0.w可以表明该光源的类型,如果为0表示是平行光,为1表示是点光源或者聚光
2016-09-13 11:13:25 1124
原创 UGUI 实现引导
实现ui的引导有很多种方式,一般都是在再外层盖上一个 掩码层。 然后把需要引导的区域镂空出来。 镂空的区域可以用很多ui的拼接,个人感觉这种方式比较麻烦。下面给出一种解决方案,直接在着色器中实现镂空的区域。 直接把镂空的区域传给着色器,然后再着色器中把这个区域透明掉即可。 1. 根据ui控件,得到镂空区域 代码如下: Vector3
2016-09-08 11:18:11 1928 4
原创 builtin_shaders-5.3.5f1 代码注释
准备慢慢的对unity3d自带的着色器进行注释。 git地址:https://github.com/wumiliu/builtin_shaders-5.3.5f1
2016-09-08 10:55:19 1896
原创 UGUI灰度处理
好友在线的时候,头像是正常显示,离线的情况下,显示灰色的。可以直接提供两种状态下的图片。但是这样比较浪费资源。直接通过修改着色器,实现是比较好的一个方式。 解决方案: 复制一份 Shader "UI/Default". 然后直接修改,这样可以保持ui原来的着色情况。然后直接使用内置的函数Luminance 进行灰度处理 Shader "Unlit/UIGrayScale" { Proper
2016-09-08 10:51:18 3702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人