光照贴图的一些知识点

本帖最后由 罗斯柴尔德 于 2017-11-21 10:26 编辑

很多同学对光照的大小和数量不是很清楚
所以我把它写出来,给大家参考一下
其他什么相关问题也可以提出来


 
为了便于观察,我做了两个模型

 
普通参数,烘焙

 

得到一张光照贴图

 

重要的是这两个,Lightmap resolution 说的是空间内,每单位面积的光照uv分辨率
这里的40表示,一平方米的里面有一张40x40的光照贴图
下面的那个说的是最后光照贴图的大小,如果最后生成的光照贴图合并在一起,少于或者等于1024x1024
那么就只会最后生成一张光照贴图
如果最后生成的光照贴图合并在一起,大于1024x1024,那么就会生成多张的光照贴图


但是有特殊情况,就是单个物体,或者手动分uv2的时候分在了一起,而且单个物体的光照uv大于我们设置的Lightmap size(比如我们设置的1024),那么最后这个物体将会自己占用一张光照贴图

比如下面这个
 
箭头指的地方就是说,当前这个物体的光照分辨率大于了我们设置的光照贴图的分辨率,那么这个物体的光照分辨率不会按照上面的设置来,而是约束成我们设置的光照分辨率贴图大小(1024)

 

烘焙之后还是只有一张贴图,因为unity有texturemege机制,可以自动合并的有光照贴图以及ugui。合并贴图的好处是减小drawcall,增强性能
上图我们也可以看到,调整物体的Scale in Lightmap 的作用是调整物体在光照贴图中所占的大小

 

比如两个相同的物体,我们只改变Scale in Lightmap,一个是1,一个是2

 
烘焙之后的效果是1:2
 

在物体的baked Lightmap 里面我们可以找到该物体在光照贴图里面占得位置
Lightmap index 表示该物体在哪张光照贴图里面
tiling x,tiling y 表示 该物体占该张光照贴图的比例(为什么有负数?因为我们有Lightmap padding)
offset 表示该物体在光照贴图中的位置(左下角为(0,0)往右走x增大,往上走y增大)

需要尽可能的得到多张光照贴图怎么办?

QQ截图20171120183530.png (41.32 KB, 下载次数: 0)

下载附件

2017-11-20 18:36 上传


调大分辨率,减小光照贴图的尺寸

不过不建议这样


性能最好的是,光照贴图越少越好
 
也就是说这个选择1024,或者以上的
注意2048或者4096会占用大量的内存,如果电脑内存不够,不仅仅可能烘焙很慢,还可能直接崩溃

原文链接地址: http://www.bfwarch.com/forum.php?mod=viewthread&tid=241&extra=page%3D1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然可以!Shader 是一种用于描述图形着色的程序。它们是由图形处理器 (GPU) 执行的,并且在三维图形渲染和二维图形渲染中都有用。 Shader 可以分为两种类型:顶点着色器 (Vertex Shader) 和片段着色器 (Fragment Shader)。顶点着色器负责处理每个三维顶点的位置,然后将它们转换为二维屏幕空间的坐标。片段着色器则负责对每个像素进行颜色计算。 下面是一些常见的 Shader 知识点: - 着色器语言: Shader 使用 GLSL (OpenGL Shading Language) 或 HLSL (High Level Shading Language) 等语言编写。 - 变量类型: Shader 中有许多不同的变量类型,如 float、vec3、mat4 等。 - 纹理: 纹理是 Shader 中用于存储图像数据的变量。 - 光照: 光照是指 Shader 如何模拟不同光源的影响,如阴影、高光等。 - 变换: 变换是指 Shader 如何在屏幕空间中对图形进行平移、旋转、缩放等变换。 希望这些信息对你有帮助! ### 回答2: 当然可以!Shader是用于实时图形渲染的编程语言,它可以在计算机图形中实现各种视觉效果。以下是一些基本的Shader知识: 1. Shader类型:主要有顶点着色器、片段着色器和几何着色器。顶点着色器处理输入顶点的位置和属性,片段着色器负责计算像素的颜色和光照,而几何着色器则可以在渲染过程中创建新的几何形状。 2. 输入和输出:Shader通过输入和输出与其他图形管线阶段通信。输入可以包括顶点位置、法线、纹理坐标等,而输出可以是像素颜色、光照值等。 3. 语言和语法:Shader语言主要有HLSL(在Windows平台上使用)、GLSL(在OpenGL平台上使用)和CG语言(在Unity 3D引擎中使用)。这些语言类似于C语言,有自己的语法规则和内置函数。 4. 着色器效果:Shader可以实现一些常见的渲染效果,如阴影、高光、反射、折射等。使用合适的算法和技术,可以创建出逼真的视觉效果。 5. Shader开发工具:为了方便开发,可以使用专门的Shader开发工具,如NVIDIA FX Composer、Unity Shader Graph等。这些工具提供了可视化的界面和实时预览功能,便于调试和修改Shader。 了解这些基本知识后,你可以开始学习和实践Shader编程。可以通过阅读相关文档、教程和书籍获得更深入的了解,同时还可以通过参与项目和实际编写Shader来提升自己的技能。祝你在学习Shader的过程中取得好的成果! ### 回答3: 当然可以!Shader(着色器)是一种在计算机图形学中使用的编程语言,用于实现图形渲染效果。下面是一些关于Shader的基础知识。 1. Shader类型:Shader主要分为顶点着色器(Vertex Shader)和片段着色器(Fragment Shader)。顶点着色器主要处理顶点的位置和顶点属性,而片段着色器则处理像素的光照、纹理和颜色等。 2. Shader语言:Shader语言包括GLSL(OpenGL Shading Language)和HLSL(High-Level Shading Language),用于编写Shader程序。GLSL主要用于OpenGL,而HLSL用于DirectX。 3. Shader编程流程:Shader的编程流程主要包括设置输入(例如顶点位置、纹理坐标等)、编写着色器代码、编译和链接Shader程序,并将其与渲染管线绑定。 4. Shader变量:Shader中含有各种变量,包括属性、全局变量、局部变量和内建变量。属性用于接收外部输入,全局变量可在整个Shader程序中使用,局部变量仅在特定作用域内有效,内建变量为Shader语言内置的特殊变量。 5. Shader效果:Shader可以实现各种渲染效果,例如光照和阴影效果、纹理映射、法线贴图、扭曲效果等。通过编写不同的Shader程序,可以达到不同的效果。 6. Shader实现技巧:优化Shader程序是提高渲染性能的关键。一些常见技巧包括使用纹理压缩、减少Shader调用次数、合并Shader代码、使用硬件特性等。 希望以上简要介绍对你了解Shader有所帮助。如有进一步问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值