Unity Shader 入门精要之基础纹理

本文介绍了Unity Shader中的基础纹理概念,包括纹理映射坐标(UV坐标)、纹理属性命名规范、Wrap Mode的两种模式(Repeat和Clamp)以及它们的区别。此外,还讲解了多级渐远纹理的工作原理和开启方法,强调了图片格式设置对性能的影响。文章还深入探讨了法线纹理的处理,包括法线范围映射以及模型空间与切线空间法线纹理的区别和优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看Unity Shader入门精要这本书,打算进攻下图形学这一块了,加油吧

1.纹理映射坐标也被叫做UV坐标,通常范围都被归一化到[0,1],需要注意的是OpenGL和DirectX在二维空间坐标系是有差异的,但Unity已经帮咱们处理好这个问题了,是用符合OpenGL的传统,也就是原点位于左下角,DX原点是在左上角.

2.在Unity中,声明某个纹理的属性是有贴别的命名规范的,也就是纹理名_ST,,例如
其中ST是缩放(scale)和平移(translation)的缩写.纹理名_ST.xy存储的是缩放,纹理名_ST.zw存储的是偏移值.

3.Inspector面板中纹理图片下有个重要的属性Wrap Mode
我现在是用的2019.2版本所以下面的选项有点多,2015版本应该是就两个Repeat和Clamp,都是纹理坐标超出[0,1]范围后的取舍,说下这两个的区别
Repeat模式是当纹理坐标超过1时会取他的小数位整数部分会被舍弃掉.
Clamp模式是把范围限制到[0,1]大于1的取1,小于0的取0.

### Unity Shader 入门教程:纹理处理 #### 创建新的 Shader 文件 在 Unity 中创建一个新的 Shader 可以通过两种方式实现。一种是在菜单栏中选择 `Assets -> Create -> Shader`,另一种方法是从 Project 视图中右键点击并选择 `Create -> Shader`[^1]。 #### 纹理尺寸优化建议 为了确保最佳性能和资源利用效率,在 Unity 中使用的纹理图像应尽可能采用2的幂次方作为宽度和高度(例如 256×256 或者 512×512)。当使用非标准尺寸时,可能会导致额外的内存消耗,并且 GPU 处理速度会受到影响而变慢[^2]。 #### 表面着色器简介 对于初学者来说,表面着色器是一个很好的起点。这类着色器允许开发者定义材质属性如漫反射颜色、高光强度等参数。值得注意的是,虽然表面上看起来像是独立类型的着色程序,但实际上它们会被编译转换成传统的顶点/片段组合形式。下面给出了一段简单的代码示例来展示如何编写一个基本的表面着色器: ```csharp SubShader { Tags {"Queue"="Transparent"} CGPROGRAM #pragma surface surf Lambert struct Input { float4 color : COLOR; }; void surf (Input IN, inout SurfaceOutput o) { o.Albedo = 1; } ENDCG } ``` 这段代码展示了如何设置一个具有透明队列标签并且应用兰伯特光照模型的简单着色器[^3]。 #### 减少过度绘制的方法 为了避免不必要的计算开销,可以通过调整场景中的对象顺序或者修改摄像机投影矩阵等方式减少视锥体内的可见几何图形数量。这样做能够显著提高渲染效率,尤其是在复杂环境中特别有用。此外,合理安排不同层次的对象遮挡关系同样有助于改善整体表现效果[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值