Unity光照渲染(一)

Unity光照版本的话有5.6之前和5.6之后是两个不同版本
这里我用2017.2

天空盒

百度搜索天空盒选一个这样的是个拆开的box的样子的图 分辨率最好大一点不然会糊掉


image.png

导入Unity Shape改为Cube


image.png

然后直接往Secnce拖
我这个图有对不上 也比较糊
image.png

image.png

这边自动生成了个材质
Exposure是曝光 越高越亮
Rotation是旋转

image.png

打开光照面板 这个就是天空球设置的位置


image.png

把之前材质改为红色 创建一个plane和cube 然后发现 物体受到了天空盒子的影响 因为物体里默认的Shader和天空盒颜色进行相乘计算


image.png
image.png

第二个是渐变颜色 第三个固定颜色


image.png

然后颜色就成了这样


image.png

怎么才能让物体不受天空盒影响呢 那就要自己创建一个材质
image.png

创建拖到cube上
image.png

Metallic 是金属程度
Smoothness是光滑程度 0的话就是基本不反射天空盒 1是基本全反射天空盒
然后换到Lighting面板里的这个属性 这是第二个选择 可以反射别的天空球的颜色 不过没必要..


image.png

这是第一个属性Resolution是分辨率 越高反射的越侵袭
image.png

然后自己搭一个房子 会发现这个影子叠加很真实


image.png

然后把 这里设置为Color和Custom 然后把Color拉到最黑


image.png
image.png

然后就是一个古老的3D建模器了 很LOW 所以Unity为我们做了很多工作去处理效果
选中相机Ctrl Shitf+F聚焦Game视图也可以去看了
找到我们的灯光 颜色改为白色


image.png

低配模型 然后我们要一步一步加上去 才有比较真实的样子


image.png

光的种类

平行光Directional Light

image.png

Directional Light是平行光


image.png

Realtime是事实进行计算 Baked是烘焙光 打成烘焙贴图可以节省性能不过物体要是静态的


image.png

影子效果 默认是软影子Soft 耗性能比较柔滑 Hard硬影子就比前面节省一点 性能 No就是没影子
image.png

然后又可以设置影子的强度 细节效果程度
image.png

下面的Cookie是投射 Flare是耀斑


image.png

选了个图投射之后效果 这个图要有透明通道
image.png

耀斑就是你看光的方向时候就有光晕 也能换成小星星
image.png

照明层级 一般都不选UI
image.png

点光源 Point light

链接:https://pan.baidu.com/s/16_D4siI_TMYXt-nXX3JzDQ
提取码:u4ts
然后导入素材

image.png

用一个新场景干掉灯光


image.png

这样搭建一个家拖一点家具


image.png

天空盒干掉 真的很黑
然后就是创建第二种光源点光源

然后做一个足球灯 把点光源放到足球灯那里


image.png

地板太亮了把地板的Mesh失活掉 然后把别的物体Shader改为默认Shader
image.png

调整下亮度 还是能看的
image.png

聚光灯 Spotlight

因为没有灯所以用cube代替


image.png

这样类似于舞台的效果 或者做手电筒 台灯

Gamma &Linear(光照效果)

image.png

Other Setting里有一个


image.png

默认Gamma 还有一个是Linear


image.png

我觉得还是暗的话Gamma好一点 亮的话Linear好一点 不过一般手机不支持Linear
然后我改成Liner场景就十分的棒了


image.png

环境光 Area Light

创建环境光
点开States


image.png

根据定点数进行烘焙 这个顶点数是当前相机观察物体的顶点数


image.png

复制多个局域光
image.png

把不需要移动的物体都选中勾上静态 也就是别的灯先不勾


image.png

现在开始贼卡 右下角开始烘焙


image.png

如果报错就找到模型


image.png

勾上Apply一下


image.png

就是把光照贴图的uv贴到物体的材质uv上
N久后 我有一面墙烘焙炸了
image.png

没影子怎么办

有时候发现我们光照没影子是因为
这个Shadow可能是None


image.png

如果还没有的话就打开这个


image.png

这里控制全局的阴影 Disable就是都不要阴影
image.png

这个是阴影效果是高还是低 低的话有锯齿
image.png

如果还没有


image.png

Cast Shadow 是否有阴影
Receice Shadow接受阴影 不勾选无法把别的物体影子投射到自己身上

还有透明Shader也不产生阴影

全局光照

因为实时光照是要每次重新计算 烘焙光照皂已经计算号了 所以特别省性能

这个是Lighting 面板
第一个是实时全局光照GI
第二个是烘焙全局光照GI

image.png
image.png

就是和周围物体光照的反射

做一个场景 干掉天空盒


image.png

关掉GI


image.png

image.png

没有光照的地方就特别黑

找到灯光把模式设置为Bake


image.png

然后把物体都勾上Static 静态 然后只勾上BakeGI
image.png
image.png

然后就好了很多
这个Auto最好烘焙后别勾选 不然场景有一点变化就会重新烘焙


image.png

然后√去掉 删掉灯光 场景也是亮的 但是移动阴影位置不会变
找到灯光 把模式设置为Mixed


image.png

场景内静态对象会被烘焙GI那区计算,动态的就是实时光照

预灯光设定
Unity每盏灯默认烘焙模式是Realtime realtimeGI会间接处理 如果模式改为Baked 这些灯光会透过Unity的烘焙GI系统处理直接光源 和间接光源 ,产生的光照贴图一旦贴到场景上在执行期间是不能改变的
所以这两个GI看游戏怎么是要好的效果还是性能
这两个一般只开一个 不然是双倍渲染

混合光照模式 Mixed Lighting

这个在灯光Mixed下选择模式才有意义


image.png

我们选择第三个


image.png
image.png

是优化好最快然后质量低
这个是实时光源 创建一个点光源 选择影子类型是Hard


image.png
image.png

然后再把点光源换成混合


image.png

然后发现右边的不是静态的Cube没了影子


image.png

因为Subtractive模式没有高光还有 还有对动态物体没有效果 不过开销很小

我们烘焙的贴图都在


image.png

文件夹是和你的Sence同名的文件夹下


image.png

然后切换成默认的


image.png
image.png

然后多了一个光照贴图 这个是存不同光源的RGBA通道


image.png

那么问题来了 如果我们想让玩家经过静态烘焙产生的阴影投射到自己身上怎么办
1.用之后的反射探针
2.就是这样还是这个位置


image.png

image.png

有的默认就是这个
不开就4个


image.png

开了就16个 那不就是实时光源了 光照贴图之前的就没用了
image.png

因为开启后是在一定范围内所有静态物体阴影实时计算
Distance就是距离 改成50看看
image.png

改成10 在Sence场景 相机 离这个物体距离是10时候就没有效果了


image.png

为了省性能我们可以拉一个碰撞在阴影的位置


image.png

然后写进入函数 进入时设置这个模式 出去时就改变

 private void OnTriggerEnter(Collider other)
    {
        if (QualitySettings.shadowmaskMode==ShadowmaskMode.Shadowmask)
        {
            QualitySettings.shadowmaskMode = ShadowmaskMode.DistanceShadowmask;
        }
        else
        {
            QualitySettings.shadowmaskMode = ShadowmaskMode.Shadowmask;
        }
    }

然后是第三个模式 他是最高级的阴影 只烘焙间接光其他都是实时的


image.png

然后根据之前设定的dictance 拉远后阴影都消失了


image.png

然后之前那个Shadow都没了
image.png

总结一下


image.png

Subtractive是最低端的 速度最快 不支持多盏灯光
Shadowmask 支持多盏灯光
Baked Indirect最高端的 除了间接光其他的都是实时光

烘焙光照参数

先把BGI模式改为中等


image.png

分别是 颜色贴图 方向贴图 RGBA通道贴图


image.png

Direct贴图可以在这设置烘焙不烘焙
是凹凸细节 是把方向转为颜色存储进来
image.png

这个是Enlighten是CPU烘焙的


image.png

这个参数是烘焙多少个参数点 就是精度
image.png

调到20然后光照贴图会变小 影子变粗糙 不过我没看出来
image.png

上面的是间接光烘焙精度
image.png

这个是uv间距 是烘焙贴图里面的 如果烘焙完发现uv信息不对可以调整这个
image.png

这个是烘焙贴图大小


image.png

然后烘焙贴图就变多了
image.png

是否压缩光照贴图
image.png

这个是环境光遮蔽 主要是角落的变化
image.png

这个是不勾选
image.png

勾选
image.png

角落会有一些你的灯光 比较真实
模拟光的影响
image.png

就是墙红色影响小球 一般是都做完了在勾这个烘焙
里面的参数越高越细腻
image.png

这个是所有灯光间接光强度
image.png

这个可以解决过爆 在灯离一个物体很近那个物体就特别亮 但是又不想为了近的物体效果就去影响室内的光照 我们要调节这个
image.png

还有离得近的物体材质的Albedo 调暗一点

如何烘焙提高速度

找到物体的MeshRenderer勾上


image.png

降低这个可以提高烘焙速度但是相应的会丢失一些效果


image.png

你可能感兴趣的:(Unity光照渲染(一))