作为离开学校十几年的学渣,最近决定要改一改过分功利地追求工程进度,得过且过的烂习惯。从最基础的光照理论复习起来。当年的课本镇住题头先。一般计算机图形学在讲解光照理论[1]时都是如下的顺序。虽说都是过时了的技术,但是你们fashion的PBR还是以这些老祖宗为基础的。魔改的时候,请注意这些是骨头动不了。1.1 Shading 着色方式 1.1.1 Flat shading平面着色 这是
转载
2024-03-20 10:00:33
96阅读
平面反射通常指的是在镜子或者光滑地面的反射效果上,如下图所示, 上图是一个光滑的平面,平面上的物体在平面上有对称的投影。一、平面反射的原理对于光照射到物体表面然后发生完美镜面反射的示意图,如下所示, 对于平面反射,假设平面上任意一点都会发生完美的镜面反射。因此,眼睛看到物体的一点的反射信息是从反射向量处得到的,这个可以用下图来表示, 这个实际上相当于,眼睛从平面的下面看向反射向量,如下图所示, 因
转载
2024-03-18 08:49:03
384阅读
【学习资料】 《C#图解教程》(第24章): 电子书下载:https://pan.baidu.com/s/1mhOmBG0 【内容】对以下文章的整合:详解C#中的反射(主要参考):C#反射机制 :https://zhu
转载
2024-05-14 22:11:53
32阅读
Unity 小科普老规矩,先介绍一下 Unity 的科普小知识:Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity
转载
2024-04-01 11:01:50
46阅读
一些概念: 在图形学中,立方体纹理是环境映射的一种实现方法。也算是反射和折射实现的第一步。环境映射的主要作用就是模拟周围环境,而使用了环境映射的物体就像是在表面镀上了一层金属。 不过需要注意的是,立方体纹理可以用来反射环境,但是不能反射使用了该立方体纹理的物体本身。因为立方体纹理不能模拟多次反射的结果。(需要使用全局光照系统来解决这个问题)。所以尽量对凸面体使用这个纹理而不要对凹面体使用。在Uni
转载
2024-06-07 13:04:08
65阅读
情况说明1,笔者的Unity版本是2020.3.0f1, 使用Unity默认老管线和Standard Shader。ForwardRendering实时渲染,没有烘焙。 2,所有的资源通过ab加载。,这边开发环境下编辑器使用的是android模式,加载的ab资源也是安卓下的ab,因此会出现GPU层shader的不兼容,我这边也是按照常规做法在客户端代码增加UNITY_EDITOR宏,在宏内为相应的
转载
2024-08-26 17:39:25
99阅读
平面反射1.平面反射的原理平面可以用来模拟光滑度很高的镜面效果,但是只能用在高度一致的平面,很多水体渲染方案中的反射部分,就是用平面反射来解决的,下面先讲一下实现平面反射的方法思路。1.1基本思路最简单的光线反射向量推导: 由反射现象可知,入射角等于反射角,对于反射材质,我们只能利用现有的法线和入射光线的方向来计算反射光线的方向,所以进行下面的计算: 求反射光线的代码:float3 reflect
转载
2024-02-24 00:24:39
316阅读
Unity中的反射CubeMap采样box projection反射探针插值多次反射Reference CubeMap采样Unity提供了Unity_GlossyEnvironment函数来对cubemap进行采样。该函数的实现如下:half3 Unity_GlossyEnvironment (UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_GlossyEnv
转载
2024-03-18 07:05:15
61阅读
前言:最近在学习反射相关的内容,从反射的原理到Cube Map的生成及使用,Reflection Probe的原理及使用,重点研究了Box Projection Reflection Probe与Fake Interior(假室内效果)的关系,及其背后的原理。运行环境:Unity 2020.3.18f1Render Pipeline: URP测试场景:Unity 3D Sample Scene(U
Unity中反射光照是如何工作的 先来看个案例问题,下图中,苹果的反射效果看起来是很奇怪的。 在它的表面上反射了两种不同颜色的Spot Light光源,还反射了不属于室内环境的来自天空盒的光线,这是有问题的。在解决这个问题之前,我们需要知道在Unity中反射是如何工作的。Unit
转载
2024-04-15 14:10:03
257阅读
前言 在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。 整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用
转载
2024-05-13 22:40:38
71阅读
一。使用制作滑动列表:使用UILayout做虚拟列表ui.list = base:findcom("center/ScrollView/Viewport/Content", "UILayout")
ui.list.onCreate = base.createrender
ui.list.onUpdate = base.updaterender
ui.list.ItemRenderer = Asse
转载
2024-04-13 12:11:58
72阅读
前言在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用的状态。事实上即使到现在lua+unity的方案仍不能轻易的说可以肆意使用,要用好,你需要知道很
转载
2024-06-17 23:44:37
155阅读
点赞
查找了 Unity 的官方资料,我们如果需要使用 WebGL 需要面对以下几个挑战:Native Plugin:也就是说各种原生插件(C/C++等编译的本地机器码库),我们的挑战是使用了 SLua。多线程:WebGL 端无法支持任何多线程代码,因为 JavaScript 没有多线程的实现,C# 端使用的类似 System.Threading 等库最终都不会被编译成相应的 js 代码。网络模块:传统
转载
2023-08-28 12:48:25
431阅读
导读随着Lua在项目中的大量使用,它所带来的性能问题也逐步成为了项目运行时的重大性能瓶颈之一。特别是内存相关的性能问题,无论是内存分配过大还是内存泄露无法回收,目前都已经在不少研发项目中集中爆发。UWA推出的GOT Online中的Lua模式已经慢慢成为研发团队对Lua进行日常性能监控的有效手段。因此,也有越来越多的团队反馈,在监控到table数持续上涨,引用Mono对象持续增多等等问题时,应该如
转载
2024-05-27 22:33:14
62阅读
0. 照旧的碎碎念转眼间已经三月了,2月份的博客因为过年的懒惰和开年之后的忙碌而没有写……第二个月就打破了去年总结时对于2018年的愿望,真是羞耻呢……年后在准备新的测试版本,断断续续做了一些优化,更多的精力放在团队的绩效评估、沟通这样偏管理的事物上,说实话技术上可以聊的东西不多。近期看到UWA群里和问答上聊Lua的使用之类的话题比较多,也在看ET这套完全基于C#进行游戏开发的框架中提到——
转载
2024-04-15 12:43:12
34阅读
前言toLua Framework是一款开源的Unity+toLua热更新框架,越来越多的游戏项目将其应用于热更新开发,但这样会形成了Lua+Mono双GC系统,而有的开发人员优化时往往只针对Mono层的优化而忽略Lua层的性能问题,或者没有类似于Unity Profiler这样高效直观的优化工具,又或者认为Lua拥有类似于C#的垃圾自动回收机制而不必优化。其实,Lua使用不规范也会造
转载
2024-05-29 11:32:20
284阅读
Unity3d是如何调用MonoBehaviour子类中的Start等方法的?
Unity3d开发,需要继承MonoBehaviour,实现Start方法:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehav
unity + lua 性能优化 1.0
注册Wrap文件到Lua虚拟机中,有很多的优化方式,比如:(1)BinderLua太多wrap很慢,最佳方案。(早先)推荐大家把可能用到的类,不要直接添加进Wrap,而是添加到link.xml中,如果上线用到了,可以先用反射垫着,整包更新的时候,再添加到wrap里面,这是目前兼顾游戏体验,防范游戏未知问题,最佳选择方案。(2)动态注册Wr
转载
2024-05-21 14:41:04
123阅读
下载与安装下载地址 GitHub
安装过程1.下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除slua_src,例子,文档等内容,如果是开发阶段则无所谓。2.等待unity编译完毕,如果一切顺利的话,将出现slua菜单, 点击slua菜单中 All->Make 命令 手动生成针对当前版本的U3d接口文件。3.每次更新slua版本,务
转载
2024-03-28 13:37:28
26阅读