Unity AB包学习笔记
Unity AB包学习笔记
前言
这个笔记是我看b站教程所记录下来的笔记。大家可以去b站看一下这个教程:b站教程。
了解什么是AB包
AB包就是特定于平台的资产压缩包,有点类似压缩文件。这些资产包括∶模型、贴图、预设体、音效、材质球等等。但是它不支持将代码一并打包。
AB包的作用
AB包相对于Resources加载,它可以更好的管理资源。Resources在项目出包的时候就被定死了,它是只读且无法修改。在Resources文件下的文件,无论是否被工程使用到它都会被打包。而AB包存储位置可自定义,压缩方式自定义且后期可以动态更新。而且AB包可以减少包体大小。这是因为AB包本身就有压缩资源,如果我们将AB包放置到网络上然后让玩家在包体安装好后再去下载AB包。那么初始包的包体大小就会减少了。(之所以减少包体大小是因为不同的包体大小每次宣发量是不一样的。我之前工作的时候听运营聊过100mb的包和100mb以下的包,宣发的钱差多了。)除此之外,AB包也支持热更新。
生成AB包资源文件
PS:我使用的Unity版本为2019.4.40 ...
Unity-Shader读书笔记(9)
Unity-Shader读书笔记(9)
高级纹理
立方体纹理(CubeMap)
在图形学中,立方体纹理是环境映射(Environment
Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体看起来像镀了层金属一样反射出周围的环境。
立方体纹理一共包含了6张图像,这些图像对应着立方体的6个面。在之前的普通纹理中,我们使用uv坐标进行采样。而在立方体纹理中,我们使用一个三维的向量值进行采样。这个方向矢量的起点位于立方体纹理的中心,然后按照矢量的方向延伸。最终这个方向向量会在立方体纹理6个面之间相交,而采样值就是通过交点计算出来的。
立方体纹理的优点在于它实现简单快速,而且得到的效果也好。但它同时也有缺点,如果场景中引入了新的物体、光源或者物体发生移动时,我们就要重新生成立方体纹理。立方体纹理不能反射使用该立方体纹理的物体,也就是说立方体纹理不能进行多次反射。、
立方体纹理在实时渲染中有很多的应用,最常见的就是用于天空盒(SkyBox)以及环境映射。
天空盒
天 ...
Unity-Shader读书笔记(8)
Unity-Shader读书笔记(8)
更复杂的光照
之前的Shader代码,我们都默认场景中只有一个平行光。在实际开发游戏的过程中(一般指大一点的3d游戏,我工作到现在做的项目都是只用一个平行光的。希望我能去做一个大一点的项目吧。2023.5.9),我们就要处理更加复杂的光源。更重要的是,在这里我们要得到物体的阴影。
Unity的渲染路径
在Unity中,渲染路径(Rendering
Path)觉得了光照是如何应用到Unity
Shader中的。因此,对于每一个Pass我们都要指定好它使用的渲染路径,这样引擎才会知道这个Pass所要的光源和处理后的光照信息。有关渲染路径的更多信息,大家可以查看Unity官网中的文章:内置渲染管线中的渲染路径
- Unity
手册。渲染路径的设置可以在项目对全局的摄像机进行设置,也可以对摄像机单独设置(我不知道不同的Unity版本是否有差异,所以大家针对自己的Unity版本百度一下吧。比如2021.3LTS版本设置渲染路径的官网文章:Graphics
- Unity
手册,其实Unity'2019.4 ...
Unity-Shader读书笔记(7)
Unity-Shader读书笔记(7)
透明效果
在实时渲染中要实现透明效果通常会在渲染模型的时候控制它
的透明通道(Alpha
Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元初了颜色值和深度值外,它还有另外一个属性——透明度。当透明度为1时,表示该像素完全不透明,而为0时,则表示该像素不会显示。
书中提供了两种方法实现透明效果(我不知道现在还有没有其他的方法):第一种是透明度测试(Alpha
Test)和透明度混合(Alpha Blending)。
渲染顺序
这里我们要强调一个概念就是渲染顺序。如果我们需要使用透明效果,那么我们就要考虑到场景中物体的渲染顺序。而不透明物体之所以不用考虑着一点是因为深度缓冲(depth
buffer,也称为z-buffer)的存在。在实时渲染中,深度缓冲是用于解决可见性(visibility)问题,它可以决定哪个物体的哪些部分被渲染在前面,而哪些部分会被其他物体遮挡。它的基本思想是:根据深度缓冲中的值来判断该片距离摄像机的距离。如果我们开启了深度测试。在我们渲染 ...
又是一次离开
又一次离开
前言
对于我现在所处于的这家公司,我真的对其没有太多的好感。当初我之所以进入这家公司,是因为自己太菜而不得不加入。毕竟我菜也没有太多的选择。
在公司的工作
自从加入这家公司以来,我虽然不能说十分努力,但是我也能称得上尽心尽责。我努力优化项目的代码,对于一些不合理的地方我也会向主程提出自己的看法。这一点我并非自吹自擂而是在陈述事实。之前我也说了,我技术并不好。所以我提出的很多想法都被否决了。正因如此我在这里工作的时期也是有所学。在我干这个项目的时候,项目一直处于缺人的状态。在一开始主程每隔一段时间就会画一次饼,比如这个项目会赚钱,我们在招人来减轻负担。然而事实是项目的数据并不好,而且公司也没有打算给这个项目加人。可项目的计划却一点都没有减少,随之而来便是996的工作时间。在996上,主程还算可以。即使公司上层规定死996,主程也没有让我们强制执行。当然主程表面的功夫还是要做,只是真正执行的时候就是睁一只闭一只眼。这个只是我的感受,我的同事并不这么看。大概率是因为我很早就完成工作了,所以我经常不加班也没有被说。我的同事经常做不完所以天天被 ...
Unity-Shader读书笔记(6)
Unity-Shader读书笔记(6)
基础纹理
纹理最初目的就是使用一张图片来控制模型外观。建模软件中的纹理展开技术就是把纹理映射坐标(texture-mapping
coordinates)存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。这些坐标用一个二维变量来表示(u,v),其中u是横向坐标。v是纵向坐标。因此纹理映射坐标又被称为uv坐标。
纹理的大小可以多变比如256*256或是1028*1028。但是uv坐标的范围只有在[0,1]之间。但是纹理采样时使用的纹理坐标不一定是在这个范围内。这种不在范围内的纹理坐标有时也十分有用,比如纹理的平铺模式,它将决定渲染引擎遇到不在[0,1]范围内的纹理坐标时如何纹理采样。
平台差异
在OpenGL中,纹理空间坐标的原点位于左下角,而在DirectX中原点位于左上角。Unity纹理空间是符合OpenGL,并且Unity自身也帮我们解决这个差异。
Ps:GitHub -
candycat1992/Unity_Shaders_Book: 书籍《Unity
Sha ...
Unity-Shader读书笔记(5)
Unity-Shader读书笔记(5)
Unity中的基础光照
关于光所需的知识点
光源
我们将光源当做一个没有体积的点。在光学中我们通过辐照度(irradiance)来量化光。
吸收和散射
光线由光源发射后于物体相交(我理解就是光照在了物体上)只有两种结果:散射和吸收。
散射只改变光线的方向而不改变光线的密度和颜色。光线在物体表面经过散射后有两种大致的方向:向物体内部(这种现象又被称为折射),向物体外部(这种现象被称为反射)。对于不透明的物体,折射进入物体内部的光线还会对物体内部的颗粒进行相交,其中一部分光线会被物体吸收而另外一部分则发射出物体表面。我们为了区分这两种不同的散射方向,我们光照模型中使用了不同的部分来计他们:高光反射(specular)部分表示物体表面是如何反射光线,漫反射(diffuse)部分则表示有多少光线会被折射、吸收和散射出表面。根据入射光线的数量和方向,我们可以计算出射光线的数量和方向,我们也会用出射度(exitance)来描述它。
吸收只会改变光线的密度和颜色,而不改变光线的 ...
Unity-Shader读书笔记(4)
Unity-Shader读书笔记(4)
一个最简单的顶点/片元着色器
UnityShader代码如下:
123456789101112131415161718192021222324Shader "Learn/SimpleShaderr"{ SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag float4 vert(float4 v : POSITION) : SV_POSITION { return UnityObjectToClipPos(v); } fixed4 frag() : SV_TARGET0 { return fixed4(1 ...
Unity-Shader读书笔记(3)
Unity-Shader读书笔记(3)
Unity中使用的坐标系
模型空间
模型(model space)空间也称为是对象空间(object
space)或者局部空间(local
space)。每一个模型都有自己独立的坐标空间,当它移动或是旋转的时候模型空间也会跟着它移动和旋转。Unity中模型空间是左手坐标系的。而模型空间中的原点和坐标轴一般是由美术人员在建模软件里面确定好的。
世界空间
Unity中世界空间是左手坐标系的。其实我们在Unity中布置场景的坐标系就是世界坐标系。
观察空间
Unity中观察空间是右手坐标系的。观察空间(view
space),通俗来说就是以摄像机位为原点的坐标系,所以观察空间也被称作摄像机空间(camera
space)。在这个坐标系中,摄像机的前向(摄像机所观察的方向)是z轴的负方向,所以z方向的值减少意味着场景深度增加。
裁剪空间
裁剪空间(clip
space)也被称为齐次裁剪空间。裁剪空间的目标是能够方便的对渲染图元进行裁剪。而如何去裁剪这就要由视椎体来 ...
Unity Shader读书笔记(2)
Unity Shader读书笔记(2)
Unity 中的Shader
Unity一共提供了4中Unity Shader模板给我们选择——Standard
Surface Shader、Unlit Shader、Image Effect
Shader和Compute
Shader。(其实现在的Unity已经不仅仅提供这些Shader,但书中只提到了这些。如果有机会我学习到就补上去。)
Standard Surface Shader
它会产生一个包含标准光照模型的表面着色器模板。
Unlit Shader
它会产生一个不包含光照(但包含雾效)的基本顶点/片元着色器。
Image Effect Shader
它会给我们实现各种屏幕后处理效果的基本模板。
Compute Shader
它会产生一个特殊的文件,这类Shader在利用GPU的并行性来进行一些和渲染无关的计算。
一个单独是Shader是无法发挥任何的作用,它必须和材质结合起来。
UnityShader的结构
Shade ...





