Home

Unity shader variant的使用

纲要 Shader Variant的出现 Shader Variant的数量 Shader Variant的优化 Shader Variant采集工具 Shader Variant的出现 先直接丢一个link给大家学习 Shader Variant的数量 pass variant subshader variant shader variant total variant 一下公式都可以在前面给的文章link里找到,这里是问了方便阅览就再copy了一下 pass variant \[PassVariants=Stages\coprod_{d=1}^{Directives}Keywords_{(d)}\] subshader va...

Read more

2020-12-09-unity 内置dll如何调试

纲要 dll调试的原理 unity内置dll如何生成pdb unity dll的调试 dll调试的原理 这里另附一篇文章,有兴趣的同学可以去看看! DLL是什么 DLL里有什么 PDB是什么 DLL是什么 DLL(Dynamic Link Library)字面意思是动态链接库;类似so,都是不能直接执行的,不同于exe,可以理解为exe是Delphi调用系统函数的合集; DLL里有什么 DLL包含EXE或其他DLL使用的函数,类,变量,UI和资源(如图标,图像,文件等); PDB是什么 PDB(程序数据库,二进制),里面包含源文件调用的文件信息和行信息。这样就可以逐行调试了。 知道了这些文件的内容,如果我们想要调试dll,就必须要有...

Read more

opengl基础学习(7)

纹理 UV 环绕和过滤 Anisotropic filtering Mipmaps 压缩纹理 UV 给模型贴纹理时,我们需要通过UV坐标来告诉OpenGL用哪块图像填充三角形。 每个顶点除了位置坐标外还有两个浮点数坐标:U和V。这两个坐标用于访问纹理,如下图所示: gpu通过uv间的差值映射到对应的纹理像素上! 图片加载 这里就不对图片的加载进行详细的说明了。直接使用stb_image.h进行加载解释就可以了! #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" int width, height, nrChannels; unsigned char *data = stbi_lo...

Read more

packagemanager如何强制刷新本地缓存

背景 公司现在已经已经使用npm处理公司框架很长一段时间了,中途有各种意外;这里就简单记述一下其中的一个问题! packagemanager本地缓存错误,而unity提供的reflesh却无法生效的bug 技术点 unity的package通常都会缓存到本地,官方的说明总结了一下大致是以下原因: 为了能共享 为了能在离线的时候也能使用 unity还提供了UPM_NPM_CACHE_PATH 和UPM_CACHE_PATH 给开发者自定义缓存的路径 upm的update指令经过我的测试,貌似并不能对已经cache的package进行再次更新(也许是我的水平不够,如果有,欢迎指出!)unity官方说使用他们的RunUnityPackageManagerDi...

Read more

opengl基础学习(6)

GLSL中的Uniform Uniform是变量类型的一种修饰符,uniform的空间被顶点着色器和片段着色器分享; 需要注意的是,uniform被存储在硬件被称为常量存储,这是一种分配在硬件上的存储常量值的空间。因为这种存储需要的空间是固定的,在程序中这种uniform的数量是受限的。这个限制能通过读gl_MaxVertexUniformVectors和gl_MaxFragmentUniformVectors编译变量得出。( 或者用GL_MAX_VERTEX_UNIFORM_VECTORS或GL_MAX_FRAGMENT_UNIFORM_ VECTORS为参数调用glGetIntegerv)OpenGL ES 2.0必须至少提供256 个顶点着色器uniform 和224个片段着...

Read more

Unity window多分辨率解决方案

说明 unity的最近的版本因为移除了以前的多分辨率启动选择界面,改成了在打包exe的时候直接选择,不能像以前一样在打包完成后,按需要调整启动的窗口大小了! 经过一系列的测试,常见的方法有以下几个: 修改注册表 调整启动参数 调整启动参数 通过逆向,我找到了一下几个可以通过cmd传递的参数 screen-fullscreen 是否全屏 -screen-fullscreen false screen-quality 质量 -screen-quality 1 screen-width width 宽 -screen-width 960 screen-height height 高 -scre...

Read more

Unity日志双击后处理

背景交代 在实际开发的过程中,为了使得项目的log能更加的有规范和控制性,通常我们都会对unity自身的Log进行二次包装! 实现 由于unity的Console Log在双击后都是打开某个资源的,所以我们需要监听Unity的Console的双击事件: 双击回调 Unity提供了一系列的回调APi OnOpenAsset是Unity提供的一个打开资源前的回调; /// <summary> /// 双击Unity日志 /// </summary> /// <param name="instanceId">instance id</param> /// <param name="line">行数</param&...

Read more

面试试题

数学 怎么判定点在矩形外? 判断一个点是否在多边形内部? 两个向量的最小夹角? 两个向量的同向和反向判定? 数据结构 简述快速排序过程? 红黑树、二叉树、平衡二叉树,三者有什么区别? 堆排序原理 贪心算法和动态规划的区别? 贪心算法的复杂度是多少? 哈希表解决哈希冲突的方法? 给定的一系列数组中查找指定的数据(重复,丢失,最大,最小) 如何检查两个矩形是否重叠? 如何在不使用第三个变量的情况下交换两个数字? 网络相关 OSI网络模型有多少层,分别是什么? TCP与UDP的区别? TCP连接/断线多少次握手,多少次挥手,分别做的是什么? TCP有没有方法可以优化其速度? C++ 全局对象的...

Read more