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...
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,就必须要有...
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...
packagemanager如何强制刷新本地缓存
背景
公司现在已经已经使用npm处理公司框架很长一段时间了,中途有各种意外;这里就简单记述一下其中的一个问题!
packagemanager本地缓存错误,而unity提供的reflesh却无法生效的bug
技术点
unity的package通常都会缓存到本地,官方的说明总结了一下大致是以下原因:
为了能共享
为了能在离线的时候也能使用
unity还提供了UPM_NPM_CACHE_PATH 和UPM_CACHE_PATH 给开发者自定义缓存的路径
upm的update指令经过我的测试,貌似并不能对已经cache的package进行再次更新(也许是我的水平不够,如果有,欢迎指出!)unity官方说使用他们的RunUnityPackageManagerDi...
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个片段着...
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...
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&...
面试试题
数学
怎么判定点在矩形外?
判断一个点是否在多边形内部?
两个向量的最小夹角?
两个向量的同向和反向判定?
数据结构
简述快速排序过程?
红黑树、二叉树、平衡二叉树,三者有什么区别?
堆排序原理
贪心算法和动态规划的区别?
贪心算法的复杂度是多少?
哈希表解决哈希冲突的方法?
给定的一系列数组中查找指定的数据(重复,丢失,最大,最小)
如何检查两个矩形是否重叠?
如何在不使用第三个变量的情况下交换两个数字?
网络相关
OSI网络模型有多少层,分别是什么?
TCP与UDP的区别?
TCP连接/断线多少次握手,多少次挥手,分别做的是什么?
TCP有没有方法可以优化其速度?
C++
全局对象的...
159 post articles, 20 pages.