Unity 中实现无限滑动的 ScrollView

当邮件中有 1000 封邮件,商店列表中有 1000 个物体,如果直接实例化 1000 条数据显示则会大大增加 DrawCall,而大量不可见的数据被 Mask 组件排除在可视范围之外,但他们依然存在,这时就需要考虑通过一个无限滑动的 ScrollView 来优化渲染性能,下面这种复用方式提供了一个通用的思路来处理此类问题。

阅读全文

Android 热修复基本原理

热修复的原理主要有两种技术,一是不需要启动 APP 就能实现修复,在 Native 层实现的。一种是需要启动 App,在 JAVA 层实现的。 本文会介绍 Android 热修复的最基本原理( Java 层实现的,需要重启 App),那就是通过 ClassLoader 的机制,通过反射先加载补丁包的类,从而替换掉存在 BUG 的类,达到修复的目的。

阅读全文

Unity 中实现图片拼接的几种方案

最近项目中遇到个问题,二维码是根据不同的用户信息动态生成的,宣传海报背景是固定的图,现在需要将其拼接在一起并分享出去,目前有两种方案分别适用于不同的情况,分别是用 UGUI 拼接好之后然后截图指定区域分享出去,其次是直接一个一个的操作像素点,这里记录了操作中需要注意的点和详细代码实现。

阅读全文

Unity 开发中 Lua 的常用技巧

项目中使用 Lua 场景较多,有一些关于 Lua 编码的技巧或者常用操作,有时还会对 Lua 的一些 API 进行扩展,特此记录一下,随时会补充,另外不当的写法会导致性能问题,应该尽量避免,Roberto Ierusalimschy 的 《Lua Performance Tips》 这篇文章提供了一些非常有用的建议。关于如何让 Lua 变得更好用这个问题,逐步完善呗,遇到的优秀的 Lua 库我也会更新在这里~

阅读全文

几何 - 贝塞尔曲线、分段贝塞尔曲线和曲面

贝塞尔曲线、分段贝塞尔曲线和贝塞尔曲面是几何部分的第二讲次的主要内容,贝塞尔曲线是计算机图形学中相当重要的参数曲线。于 1962 年由法国工程师 Pierre Bézier 所发表,贝塞尔曲线完全由其控制点决定其形状,N 个控制点对应着 N-1 阶的贝塞尔曲线,并且可以通过递归的方式来绘制。

阅读全文

纹理的应用:法线贴图、凹凸贴图与阴影贴图等相关应用原理

在 《重心坐标与插值、纹理映射》 的内容中,我们详细介绍了纹理映射的概念,以及纹理贴图过大过小带来的种种问题与解决方案,但纹理映射的应用远不止单单作为 diffuse 的反射系数来表现出不同颜色。本文会详细介绍一些主要的纹理映射的应用及其原理,首先从环境光贴图开始说起。

阅读全文

重心坐标与插值、纹理映射

本节会详细介绍重心坐标的定义以及解法,并简略的提及重心坐标在图形学中的运用。其实插值在计算机图形学中是一个非常通用的概念,无论是坐标、还是颜色、还是深度、都可以作为插值的目标,因为插值的本质就是加权平均,理解这个思想很重要。另外会介绍纹理映射,以及纹理过大、纹理过小的解决方案,如:双线性插值、三线性插值、Mipmap、各向异性过滤、EWA。

阅读全文

Blinn-Phong 光照模型与着色方法

我们就开始进入到着色(shading)的环节了,简单来说 shading 就是计算出每个采样像素点的颜色是多少。本文所要介绍的是局部光照模型,并不是真正准确的模型,但是优点是计算快,效果可以接受,至今依然广泛的运用在各种游戏之中。具体会从最基础的泛光模型,Lambert 漫反射模型,再到 Phong 反射模型,Blinn-Phong 反射模型一步步推进详细详解我们如何得到一个局部光照模型。

阅读全文

抗锯齿 SSAA 及 MSAA 算法和遮挡剔除 Z-Buffer 算法

本次主要学习抗锯齿 SSAA 及 MSAA 算法和遮挡剔除 Z-Buffer 算法。 当我们把场景中的三角形光栅化显示到屏幕像素上时,会出现锯齿效果,其实很好理解,根据之前学习过的光栅化的流程,之前主要解决的是通过采样确定一个像素在不在这个三角形中的问题,现在要解决的就是锯齿问题。这类问题通常也叫做抗锯齿处理或者反走样(Antialiasing)。

阅读全文