Unity Shader 学习笔记(10) 纹理(Texture)的属性

【Unity5.x Shaders】Shader中的Texture纹理 2D图片如何映射到3D模型?这个过程叫做纹理映射(texture mapping)。 模型事实上是用三角形构成的,每一个顶点可以存储信息并且可以被shaders接收。 其中顶点中存储的最重要的信息是UV数据(UV data)。 它由两个坐标构成:U和V,取值范围都是从0到1。它们代表了2D图片上像素将要映射到模型顶点的XY position。 UV数据只提供给顶点。当三角形内的点需要被纹理映 阅读详情

Unity Shader 学习笔记(10) 纹理(Texture)的属性

参考书籍:《Unity Shader 入门精要》
官网API:Textures
详解Unity3d游戏开发中Texture贴图纹理及相关属性

*版本:2017.1.1f1


Texture Type

选择适合的类型,Unity会为Unity Shader传递正确的纹理,并对一些纹理进行优化。

Defualt(默认纹理)

在这里插入图片描述

Normal map(法线纹理)

在这里插入图片描述

使用了法线纹理类型,Unity会根据不同平台对纹理进行压缩,如DXT5nm格式,通过UnpackNormal函数进行采样,见下面UnityCG.cginc中源码。这种压缩只用两个通道(原来三个),减少法线纹理占用的内存空间。


inline fixed3 UnpackNormalDXT5nm (fixed4 packednormal)
{
    fixed3 normal;
    normal.xy = packednormal.wy * 2 - 1;
    normal.z = sqrt(1 - saturate(dot(normal.xy, normal.xy)));
    return normal;
}

inline fixed3 UnpackNormal(fixed4 packednormal)
{
#if defined(UNITY_NO_DXT5nm)
    return packednormal.xyz * 2 - 1;
#else
    return UnpackNormalDXT5nm(packednormal);
#endif
}

Create from Grayscale

在这里插入图片描述

用于高度图生成法线纹理。这样就可以和切线空间下的法线纹理同等对待了。

  • Bumpiness:控制凹凸程度
  • Filtering:决定凹凸程度计算方式
    • Smooth:生成平滑的法线纹理
    • Sharp:使用Sobel滤波(一种边缘检测使用的滤波器)生成法线纹理

WrapMode

决定纹理坐标超过[0, 1]范围后将会被如何平铺(Tiling)。
在这里插入图片描述

  • Repeat:如果纹理坐标超过1(同理小于0)时,整数部分会被舍弃,如值为2.23采样值等于0.23。
  • Clamp:如果纹理坐标超过1(同理小于0)时,会截取到1(或0)。

渐变纹理应该选择Clamp(下右图)。因为Repeat(下左图)可能产生如下错误,大于1的值如1.01会采样为0.01,为黑色。
在这里插入图片描述


FilterMode

决定纹理拉伸时采样哪种滤波模式。
在这里插入图片描述

Point,Bilinear,Trilinear对比如下,效果依次提升,性能消耗同样增大。
在这里插入图片描述

  • Point:最近邻滤波,缩放是采样像素数目只有一个。
  • Bilinear:使用线性滤波,找到四个近邻像素,然后进行线性插值混合得到,图像模糊了。
  • Trilinear:几乎和Bilinear一样,只是如果开启多级渐远纹理技术,那就会在多级渐远纹理之间进行混合。

多级渐远纹理(mipmapping)

面板中Advanced->Generate Mip Maps默认开启。原理是提前用滤波处理得到更小的图形,每一层都是上一层图像降采样得到,以此类推,形成一个图像金字塔。在物体远离摄像机时,直接使用较小的纹理。缺点是通常会多占用33%的内存空间。


Unity基础二:Material材质、Texture纹理(贴图) 和 Shader着色器 1. Material材质 (shader的实例) 创建材质 : 给物体添加材质: 材质拖给物体对象的Mesh Renderer组件中的Materials中的Element 2. Texture纹理(贴图) 和 shader着色器 (渲染管线中的GPU图像算法程序) 3.物理着色器 4. Rendering Mode渲染模式 5. Main Maps ... 阅读详情

相关推荐

【Unity Shaders】法线纹理(Normal Mapping)的实现细节

写在前面 写这篇的目的是为了总结我长期以来的混乱。虽然题目是“法线纹理的实现细节”,但其实我想讲的是如何在shader中编程正确使用法线进行光照计算。这里面最让人头大的就是各种矩阵运算和坐标系之间的转换,很容易因为坐标系错误而造成光照结果的错误。

candycat 5万+

Shader入门-------基础纹理

Shader入门-------基础纹理 前记:不分行永远滴痛--------------------mx 前置知识: 使用纹理映射技术我们可以吧一张图“黏”在模型表面,逐纹素地控制模型的颜色。 纹理映射坐标:定义了该顶点在纹理中对应的2D坐标,通常这些坐标使用一个二维变量(u,v)表示,期中u是横向坐标,v是纵向坐标。因此纹理坐标通常被称为UV坐标 单张纹理:(实践) 纹理的属性: Texture Type (纹理类型) :法线纹理一节中会使用Normal map类型,后面还会看到Cubemap等高

m0_56399931的博客 1082

Unity Shader Example 26 (Texture2DArray)

Shader "Unlit/Test" { Properties { _texArr ("Tex", 2DArray) = "" {} } SubShader { Pass { CGPROGRAM #pragma vertex vert #pra

aa20274270的博客 5090

关于Unity 图片的Texture Type

当我们导入一张图片后,点击图片,有一个Texture Type的贴图类型, Texture:普通贴图 Normal map:法线贴图 Editor GUI and Legacy GUI:UI贴图 Sprite(2D and UI):精灵 Cursor:鼠标指针 Reflection:反射贴图 Cookie:遮罩贴图 Lightmap:烘焙贴图 Advanced:高级(可自定义一些贴图属性) ...

Yee1117的博客 2951

【Unity Shader】(5)基础纹理 将图片映射到材质上(代码部分)

将单张纹理映射到材质球 本章节分为代码部分和概念部分,概念部分明天再写,今天先开摆! 在最初的游戏行业,游戏中的物体都是使用一张图片来控制模型外观的,将“纹理映射”直接“黏”在 模型的表面,再通过“逐纹素(texel)”来控制模型的颜色。这里的“纹素”其实就是为了区分“像素”而诞生的名词,在纹理中的每个单位,即为纹素。 根据上文,可以轻松的得知,我们需要如何将贴图(也就是我们的纹理图片)映射到模型上——通过纹理展开技术,将纹理映射坐标存储在每一个顶点上。 纹理的坐标 还有一个重要的便是unity中的“纹

1eonChan的博客 4712

map、mesh、texture、material 和 shader 的联系

map、mesh、texture、material 和 shader 的联系

一只程序猿 1万+

shader基础小问题

Texture WrapMode中Clamp和Repeat区别前言一、Texture WrapMode中Clamp和Repeat区别 前言 提示:shader基础 一、Texture WrapMode中Clamp和Repeat区别 默认是 Clamp,如果使用图片拉伸则使用这个选项 Repeat是希望图片平铺则使用这个选项 Repeat:平铺 Clamp:拉伸 修改Texture 属性: ...

zoezhi的博客 376

Unity Shader单张纹理

《Unity Shader 入门精要读书笔记--初级篇--第七章--单张纹理》预备知识代码实战 预备知识 名词解释: 纹理映射技术(texture mapping):将一张图片“贴”到模型表面进行混合的技术。 纹素(texel):纹理贴图上的像素,但与像素概念做区别。 纹理映射坐标(texture mapping coordinates):定义了模型顶点在纹理贴图中对应的坐标,通常使用(U,V...

【BGsusu】实时计算机图形学专栏--为这个世界筑梦 481

Animation-Texture-Baker入门指南:如何在Unity中实现顶点动画纹理烘焙

Animation-Texture-Baker是一款强大的Unity工具,它能够将模型顶点的位置和法线数据保存到Texture2D中,通过ARGBFloat或HDR Texture实现高效的顶点动画效果。本指南将带您快速掌握这一工具的使用方法,让您的游戏动画在保持视觉质量的同时获得更好的性能表现。 ## 为什么选择顶点动画纹理烘焙? 传统的骨骼动画在处理大量角色或复杂动画时,往往会遇到性能瓶颈

gitblog_00116的博客 819

Unity Shader 渐变纹理

纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。 Shader "MyShader/RampTexture" { Properties { _Color("Color Tint",Color) = (1,1,1,1) _RampTex("Ramp Tex",2D) = "white"{} ...

songhuanfei2017的博客 1063

Unity 战争迷雾shader

首先创建两个摄像机,两个摄像机的所有值都一样,把一个拖成子物体。接着 ,在地形的下方创建一个跟地形差不多长、宽的plane,给他一个材质球,材质球设为黑色。接着,创建一个WarFog层,将子摄像机的渲染层Culling Mask设置成只渲染WarFog层。将Plane设置成WarFog层。在角色底下创建一个白色面板,设置为WarFog层。创建一个Render Texture ,将它拖到子摄像机的T...

Egret_or_Unity的博客 4091

Unity Shader编程】之基础纹理

‌切线空间特性‌:切线空间由顶点‌切线(T)‌、‌副切线(B)‌、‌法线(N)‌构成,法线贴图存储的是该空间下的法线偏移‌。在此空间下,法线方向‌无需依赖模型姿态‌,仅需将光照方向、视角方向等外部向量转换到切线空间,即可直接参与计算‌13。

qq1342753906的博客 1217

Three 之 three.js (webgl)shader 中 Texture 贴图 uv 坐标的相关简单说明,并简单测试 UV 重复旋转偏移效果

纹理坐标系统 uv其实就是纹理坐标,因为xyz已经被顶点坐标占用了,所以uvw就用来表示纹理坐标。它时候贴图影射到模型表面的依据,把表面的点与平面上的像素对应起来,一般取值在0~1; u:图片在显示器水平的坐标 v:垂直方向 w:垂直于显示器表面 一般情况只是在表面贴图,就涉及不到w,所以常称为uv。 ThreeJS纹理贴图 使用纹理对象贴图 ThreeJS本身做了封装,贴图十分方便,如果大家英文好可以直接去官网,嫌麻烦也可以在中文网站上直接查看教程或对象方法。(⚠️以下非完整代码) ...

仙魁XAN 9255

【Unity Shader】浅析Unity shader中RenderType的作用及_CameraDepthNormalsTexture

初学Unity ShaderLab的时候,一定有接触过Unity Shader中的Tags标签块,比如: "LightMode"="Vertex" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" 其中LightMode标签指定该pass

MrASL的博客 1万+

瑞昱RTL8735B开发板深度评测:如何用200元板子搞定1080P视频流+AI推理?

本文深度评测瑞昱RTL8735B开发板(AMB82 MINI),解析其如何在200元预算内实现1080P视频流处理与边缘AI推理。该板搭载0.4TOPS NPU算力,支持H.264/H.265编码,适合物联网开发者构建高性价比边缘计算方案,并详细介绍了硬件架构、AI模型优化及实战项目搭建。

weixin_33712987的博客 522

移相变压器Simulink建模与HVDC系统仿真实践

移相变压器是电力电子领域实现精确相位调节的核心设备,其通过特殊绕组设计改变输出电压相位角,在解决环网潮流不均、阻尼功率振荡等场景具有关键作用。本文基于MATLAB/Simulink环境,详细解析移相变压器的建模原理与技术实现,包括磁路耦合特性模拟、参数计算方法和控制策略设计。针对HVDC高压直流输电和FACTS柔性交流输电系统等典型应用,提供仿真模型搭建技巧与问题排查指南,特别涵盖新能源并网场景下的相位调节优化方案。通过实测数据验证,所建模型在稳态精度和动态响应方面均满足工程要求,为电力系统稳定性分析提供有

weixin_28278377的博客 270

Unity Shader深度纹理、法线纹理的使用

前言:在进行屏幕后处理的时候,我们往往会应用很多图像处理的相关算法,例如高斯模糊,sobel边缘检测等等。但是这些图像算法都是基于图像的颜色值来计算的,而我们通过渲染管线得到屏幕图像时,不仅可以得到颜色缓冲,还可以得到深度缓冲以及法线信息等。更多的信息可以为我们提供更多的方法去处理和计算,例如,在边缘检测时,我们如果用sobel基于颜色信息计算得到边缘,那最终得到的边缘信息会受到物体纹理以及光照等...

mozhi 1646

如何利用三阈值游程理论识别干旱事件_python

如果当前时间点与上一个干旱事件的结束位置相隔不超过一个月(`index - current_event['end_index']

weixin_44259522的博客 1945

Unity Material(材质)、Texture(纹理)、Shader(着色器)简介

Unity Material(材质)、Texture(纹理)、Shader(着色器)简介

明明明的博客 3229

服务器基础知识介绍

服务器,不仅仅是一台高性能计算机,更是网络的核心节点,承担着网络服务的责任。然而,相较于普通计算机,服务器对于稳定性、安全性和性能等方面提出了更高的要求,这使得它们在数字化浪潮中傲然独立。在硬件成本结构中,CPU和芯片组占据约50%的成本,内存占15%,外部存储占10%,其余硬件约占25%。服务器的逻辑结构与普通计算机相似,但由于其需要提供高性能计算,对稳定性、可靠性、安全性、可扩展性和可管理性的要求更高。服务器的分类多种多样,根据产品形式可分为塔式服务器、机架服务器、刀片服务器和机柜服务器。

m0_73576645的博客 1882

浏览器Cookie迁移实战:从Chrome导出导入登录态全攻略

Cookie是浏览器保存的会话凭证,服务端通过Set-Cookie将登录态种在本地。迁移Cookie本质上是把服务端认可的会话标识搬到新环境,从而免去重复输入账号密码和二次验证的麻烦。在换电脑、切浏览器或重装系统时,掌握Cookie的导出导入技术能显著提升效率。Chrome与Edge同属Chromium内核,存储结构相似,但字段差异(如Domain、SameSite、Secure)常导致迁移失败。通过浏览器扩展或CDP脚本可实现跨浏览器登录态迁移,适用于内网后台、开发环境等场景。本文从原理到实践,梳理Coo

weixin_42533120的博客 340

Unity中 URP Shader 的纹理与采样器的分离定义

我们在这篇文章中,了解一下 URP 下Shader 纹理采样怎么实现。(URP下纹理采样 和 BRP下纹理采样不同)

楠溪泽岸的博客 2982

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

Animation-Texture-Baker最佳实践:10个提升动画渲染效率的技巧

Animation-Texture-Baker是一款专为Unity开发者设计的动画优化工具,它能够将顶点位置和法线数据高效存储到Texture2D中,通过ARGBFloat或HDR Texture技术显著提升动画渲染性能。本文将分享10个实用技巧,帮助你充分发挥该工具的潜力,打造流畅高效的动画体验。 ## 一、选择合适的纹理格式 在使用Animation-Texture-Baker时,纹理格式的

gitblog_00519的博客 679

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Unity Shader 学习笔记(9) 渐变纹理、遮罩纹理
下一篇: Unity Shader 学习笔记(11) 渲染队列、透明效果
ChiLi_Lin
博客等级 码龄12年 760粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值