首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【GAMES101-现代计算机图形学课程笔记】Lecture 09 Shading 3 (纹理映射)

举例解释就是假设我们需要用右边的纹理(比如是40x40)渲染左边的两个三角形(比如是80x00),但是纹理平面非常小,那么最后导致的结果就是一个纹素要对应4个像素,这样在实际渲染时产生的效果就是纹理被拉伸...2.2 Texture Minification(纹理缩小) [纹理缩小] 另外一种情况就是纹理相比于要渲染的物体大,这样就会导致纹理缩小,即一个像素会覆盖多个纹素。...(7788) [2u9m3o734m.png] 但是如果使用不规则图形来计算纹素的平均值会复杂不少,而Mipmap的精妙之处就在于它会用正方形来近似不规则图形,如下图示,假设近似后的正方形边长为$L$,...[z6xmlrzh1v.png] Mipmap之所以会产生模糊效果正是因为正方形近似导致的。...我们通过下图可以看到左边的屏幕空间的每个像素对应到右边的纹理空间的形状可能是不规则的扁、长的形状,如果用正方形取近似显然会导致很大的误差。

1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    纹理映射(一)

    查找纹理值 根据原始图像的像素坐标转换成对应的问题坐标,那纹理上对应坐标的值就是需要给图像渲染的值,如下所示: image.png 这本质上就是一个从图像到纹理坐标的映射。...最简单的实现就是坐标按比例映射: image.png 这样的确也有效果,一个实际的应用效果如下: image.png 但是对于图像和纹理像素差异大,而且观察角度比较刁钻的场景就不太行了,走样会比较明显...,如下所示: image.png 看到这儿可以看出纹理映射的2个关键问题了: 建立纹理坐标映射函数 确定对应坐标的纹理值并且不引入过多的走样 纹理坐标函数 纹理坐标函数用来做坐标的映射,在选择坐标函数的时候...image.png 不过会引入Size Distortion,如果图像和纹理的三角形面积差不多,那么差异会小一些,如果面积区别大,那么对应的差异也会很明显。...如下图所示: image.png 人脸上灰色的正方形,鼻子处明显会小于太阳穴处。

    56020

    【100个 Unity实用技能】☀️ | Unity中 过滤透明区域的点击事件

    Unity 实用技能学习 Unity中 过滤透明区域的点击事件 在Unity中我们有时候会遇到一些带有透明度的图片按钮,有些时候可能并不希望点击按钮的透明区域时也触发点击事件,这个时候就要进行额外处理...像素检测 过滤透明区域 这种方法是通过读取Sprite在某一点的像素值(RGBA),如果该点的像素值中的Alpha小于一定的阈值(比如0.5)则表示该点是透明的,即用户点击的位置在精灵边界以外,否则用户点击的位置在精灵边界内部...; //获取指定纹理坐标(u, v)处的像素颜色。...//Color c = _image.sprite.texture.GetPixel((int)uv.x, (int)uv.y); //用于在纹理上执行双线性插值以获取像素颜色值,这个方法使用双线性插值算法来估算纹理中某个位置的颜色...,而不是直接从纹理的像素中读取颜色。

    71421

    Unity2D手册翻译(三)

    Sprite Editor 有时候一个Sprite纹理只包含一个图形原素,但是把多个相关的图形一起合并到一个图片中会更方便。...带有多个元素的Sprite纹理,需要在Inspector里把 Sprite Mode 设置为 Multiple 。(参看下面的 图2:Texture Import Inspector ...)...最右边的滑动条控制纹理的像素(mipmap)。移动滑动块到左边是减少Sprite纹理的解析度。最重要的空间是在左上的 Slice 菜单,这里有选项可以自动的把图片里的元素拆分开。...面板里的空间让你选择sprite图形的名字,并且通过坐标来设置矩形的位置和尺寸。边界宽度,从左边,上边,右边和下边可以用像素来指定。...如果你点击在控制条里的那个 Slice 菜单,你可以看见这个面板: ? 当切片类型设置为 Automatic ,编辑器会尝试通过透明度去猜测sprite元素的边界。

    2K40

    【GAMES101-现代计算机图形学课程笔记】Lecture 09 Shading 3 (纹理映射)

    举例解释就是假设我们需要用右边的纹理(比如是40x40)渲染左边的两个三角形(比如是80x00),但是纹理平面非常小,那么最后导致的结果就是一个纹素要对应4个像素,这样在实际渲染时产生的效果就是纹理被拉伸...2.2 Texture Minification(纹理缩小) ? 另外一种情况就是纹理相比于要渲染的物体大,这样就会导致纹理缩小,即一个像素会覆盖多个纹素。...但是如果使用不规则图形来计算纹素的平均值会复杂不少,而Mipmap的精妙之处就在于它会用正方形来近似不规则图形,如下图示,假设近似后的正方形边长为 L ,此时我们就能利用前面生成的若干层纹理图了,我们可以很明显的知道...Mipmap之所以会产生模糊效果正是因为正方形近似导致的。我们通过下图可以看到左边的屏幕空间的每个像素对应到右边的纹理空间的形状可能是不规则的扁、长的形状,如果用正方形取近似显然会导致很大的误差。...这样处理之后,当查询屏幕空间某个像素点的纹理时,我们就可以用其对应的纹理图上的纹理,这样就解决了Mipmap只能用正方形来近似的问题。

    2.3K80

    基础渲染系列(三)多样化的表现——组合纹理

    这意味着纯灰色(而非白色)纹理不会产生任何变化。所有低于½的值将使结果变暗,而高于½的任何值将使结果变亮。 因此,我们需要一个特殊的细节纹理,该纹理以灰色为中心。下面是网格的这种纹理。 ?...(网格细节纹理) 细节纹理必须是灰度的吗? 它们不必是灰度的,但通常是灰度的。灰度细节纹理将通过变暗和变亮来严格调整原始颜色。这是相对直接的方式。与非灰色的颜色相乘会产生较不直观的结果。...彩色细节纹理用于产生细微的颜色偏移。 要使用此单独的细节纹理,我们必须向着色器添加第二个纹理属性。使用灰色作为默认值,因为这不会改变主纹理的外观。 ?...现在需要做的就是在细节纹理的导入设置中启用Fadeout Mip Maps。请注意,这也会自动将滤镜模式切换为三线性,以便逐渐淡化为灰色。 ? ?...为什么会这样? ? ? (Gamma vs. linear 空间) 因为我们将细节纹理样本加倍,所以½的值不会更改主纹理。但是,转换为线性空间会将其更改为½2.2(½的2.2次幂)≈0.22附近。

    2.7K10

    Golang语言情怀--第118期 全栈小游戏开发:第9节:精灵帧资源(SpriteFrame)

    用于查看 Texture Packer 资源中的子资源是否被旋转 Offset X、Y 只读属性,不可更改。...= sp; 使用 RenderTexture 渲染 RenderTexture 是一个渲染纹理,它可以将摄像机上的内容直接渲染到一张纹理上而不是屏幕上。...图像资源的自动剪裁 导入图像资源后生成的 SpriteFrame 默认会进行自动剪裁,去除原始图片周围的透明像素区域。...Sprite 图像时去除图像周围的透明像素,我们将看到刚好能把图像包裹住的约束框。...取消勾选,Sprite 节点的约束框会包括透明像素的部分。 Size Mode 用来将节点的尺寸设置为原图或原图裁剪透明像素后的大小,通常用于在序列帧动画中保证图像显示为正确的尺寸。

    27110

    项目优化之DrawCall优化(Unity3D)

    为什么我的游戏的FPS如此的低? 我已经把所有的(Texture)纹理和(Sprite)精灵都压缩了!为什么还是那么延迟? 为什么我的游戏仍然崩溃? 为什么在玩我的游戏时,电池消耗如此的快?...在获得命令之后,GUP获得了渲染状态的值(材质(Material)、纹理(Texture)、着色器(Shader)等等),且在你的屏幕中所有的顶点数据通过一些代码逻辑转换成漂亮的像素(当然我希望它是漂亮的...时,游戏会暂停,然后Unity会将当前正在执行的一帧的内容缓存下来,其中所有Draw Call你都可以进行前进与后退操作,从而能够从Draw Call级别分析开销。...你的也许和我的不一样,这取决于你的屏幕(在和我的UI一样的情况下)。你可以滚动每一个Draw Call去查看每一次调用所产生的信息。 OK,我可以看到一些Draw Calls,我为什么要在乎它呢?...这便优化了2倍的性能!!也减少了GPU的负担!! 想象一下现实世界中,由500降到200(下降两倍的意思)这将会是一个很大的提升。特别是对于手机来说。 这便给予渲染有了巨大的提升。

    1.6K50

    基础渲染系列(二)——着色器

    即使它们现在不再有用,着色器编译器仍然期望有它们,如果省略,可能会产生错误。具体来说,如果你在缺少{}的纹理参数之后放置非纹理参数,则会出错。也许在将来的Unity版本中省略它们是安全的。...这意味着边缘以外的像素与边缘上的像素相同。当设置为repeat时,UV会环绕。这意味着边缘以外的像素与纹理相反侧的像素相同。默认模式是重复纹理,从而使其平铺。...使用双线性或三线性滤波时,在对纹理进行采样时会对相邻像素进行插值。这对于纹理中间的像素很好。但是,位于边缘的像素的相邻像素是什么?答案取决于自动换行模式。 clamped,边缘上的像素会相互融合。...这会产生一个很小的区域,像素不融合,但并不明显。 重复时,边缘的像素将与纹理的另一侧融合。如果两边不相似,你会注意到另一边有一点渗入边缘。放大测试纹理的四边形的一角,以查看差异。 ?...(mipmap的高级设置) 为什么淡化到灰色? 它用于细节纹理,我们将在以后的教程中进行介绍。 你可能会认为它可以用于雾化效果,但是事实并非如此。

    4K20

    学习 PixiJS — 视觉效果

    下图是两种情况的对比。 ? 你还可以使用 tileScale.x 和 tileScale.y 属性更改平铺精灵使用的纹理的比例。...示例: 首先,用皮卡丘的图像创建一个精灵。然后创建一个蓝色正方形并定位在精灵的上方(形状的颜色并不重要)。最后,精灵的 mask 属性设置为创建的正方形对象。这样会只显示正方形区域内精灵的图像。...Pixi 会自动调整像素密度,以匹配运行内容的设备的分辨率。你所要做的就是为高分辨率和低分辨率提供不同的图像,Pixi 将帮助你根据当前的设备像素比选择正确的图像。...同时这也会设置精灵的 baseTexture.resolution 属性(sprite.texture.baseTexture.resolution)。 第一步是找出当前的设备像素比。...首先,从想要变形的事物的图像开始。滑行蛇实际上是一个简单的直线图像,如下图所示。 ? 然后决定你想要独立移动蛇的段数。蛇图像的宽度为600像素,因此大约20个片段会产生很好的效果。

    3.4K40

    Unity 2D 手册部分翻译

    Sprites本质上仅仅是标准的纹理(textures),但是有一些特殊的技术,来合并和管理Sprite的纹理,以便开发期有更好的性能和便利性。...(例如,Box Collider 2D 是一个正方形而 Box Collider 是一个正方体) 完整的2D图例组件列表,参看 2D或3D项目 。...如果你以前用过3D,Sprites 本质上仅仅是标准的纹理(textures),但是有一些特殊的技术,来合并和管理Sprite的纹理,以便开发期有更好的性能和便利性。...Sprite Editor Sprite Editor 让你可以从一个大图片里提取多个sprite图形,并且可以在你的图形编辑器里编辑包含在单一纹理里的多个图像组件。...把你的图片设置为一个Sprite 如果你的项目模式被设置为2D,你导入的图片会自动被设置成一个 Sprite 。

    2.3K50

    Shader编程之地标特效

    首先sprite就是三维空间中的二维平面,通常就是小正方形或者长方形,然后用一个actor类蓝图将2者组合起来,其中上方是一个billboard,下方是一个plane。...billboard是和sprite类似的一个概念,永远面朝相机(好处是可以放到后期来渲染),但是billboard的中心点默认是正方形的中心。...我们需要5个UE4资产: circle材质:下方的同心圆动画材质 plane网格体:下面同心圆的载体 icon纹理:上方的图标 mark材质:上面的动画材质 landmark蓝图类:成品 之所以选择...然后图标的化我们准备一张透明png就可以了,四周trim以下,这张图主要记录了哪些像素是透明的。...一般的canvas算法比较符合直觉,要画圆形或方形都有直接的函数可调,但shader算法是遍历每个像素,依次着色,最终形成想要的图形,比较抽象,但也正是这种着色模型可以借助现代GPU数千个物理核心的高并发能力

    1.3K40

    libgdx 图形绘制

    纹理(texture) 一个图片从原始格式解码并上传到GPU就被称为纹理。OpenGL要求纹理的高度和宽度都必须是2的n次方大小,只有满足这个条件纹理图片才是有效的。...一旦获取了像素值,我们就可以将这些数据传给OpenGL,让OpenGL生成一个纹理贴图 为了绘制texture,常常使用几何来描述,通过几何对应的顶点来描述纹理。...而绘图的大小和位置由几何描述和OpenGL的viewport的设置共同决定。当然大部分的游戏都会让viewport的大小和屏幕一致,这就意味使用像素更容易让纹理绘制在合适的大小和位置。...绘制的图片,分辨率必须是2的次方(如32x32, 128x128, 256x512, 512x1024等) 例如: 本示例采用分辨率为 256x256 像素: ?...图形绘制 绘制图形,程序启动(create)——》读取图片(image)——》纹理(texture)绑定——》绘制初始化(sprite.begin)——》绘制(render)——》绘制完处理(sprite.end

    1.6K30

    Unity性能调优手册7:渲染优化,DrawCall,剔除,Shader,LOD,TextureStreaming

    Overdraw是指在屏幕上每像素多次绘制片段,它影响的性能与片段着色器的负载成比例。 特别是当生成大量半透明粒子时,例如在粒子系统中,通常会产生大量的overdraw。...; return sprite; } 在SpriteAtlas中加载单个Sprite比只加载一个Sprite消耗更多的内存,因为整个图集的纹理都是加载的。...使用顶点着色器执行计算 顶点着色器会根据网格中的顶点数量执行,碎片着色器会根据最终写入的像素数量执行。一般来说,顶点着色器的执行频率通常低于片段着色器,所以最好尽可能在顶点着色器中执行复杂的计算。...例如,用于颜色分级的LUT(颜色对应表)将预先校正纹理,使每个像素的坐标对应于每种颜色。通过在着色器中基于原始颜色对纹理进行采样,结果几乎与对原始颜色进行预校正相同。...“Shadows”部分允许您更改阴影的格式硬阴影会产生清晰的阴影边界,但负载相对较低,而软阴影更昂贵,但它可以产生模糊的阴影边界。

    2.7K64

    Golang语言情怀--第117期 全栈小游戏开发:第8节:资源工作流

    详情请参考下文 genMipmaps 部分的内容 Wrap Mode S/T 设置 S(U)/ T(V)方向上的纹理寻址模式,也就是像素对纹理在 S(U)或者 T(V)方向上的映射模式。...详情请参考下文 寻址模式 部分的内容 注意:由于默认的 Wrap Mode 在渲染图像的透明边缘时可能会出现黑边,所以在将图像资源类型设置为 sprite-frame 时,Creator 会自动将 texture...接下来我们对部分属性进行简单的说明。 过滤方式 当 Texture2D 的原始大小与屏幕映射的纹理图像尺寸不一致时,通过不同的纹理过滤方式进行纹理单元到像素的映射会产生不同的效果。...线性过滤(linear) 线性过滤使用距离采样点最近的 2 x 2 的纹理单元矩阵进行采样,取四个纹理单元颜色值的平均值作为采样点的颜色,像素之间的颜色值过渡会更加平滑。...对于 [0,1] 之外的部分,将使用边缘的纹理坐标内容进行延伸,产生类似边缘被拉伸的效果。

    21940

    如何用Scratch 3绘制矢量图形 【Gaming】

    它很受平台欢迎,甚至被Raspberry Pi 基金会(Raspberry Pi Foundation)用于扩展支持。 Scratch 3.0已经被重写。...无论放大或缩小多远,矢量图像看起来都很平滑,没有像素化。矢量可以创建任意大小的平滑的作品。 在Scratch中,游戏中可玩的角色称为精灵。...Scratch有一个预先制作的sprite库,可以用在项目中,但是您也可以使用内置的paint程序或内置的vector应用程序绘制自己的sprite。 如何绘制大象 使用矢量绘图不需要绘图技巧。...绘图工具 Scratch的矢量绘图工具箱是您找到绘制对象所需工具的地方: 图片7.png 下面是一些与绘制矢量图形相关的词汇: 画布Canvas:你画的地方;白色和灰色的盘是透明的 节点Node:沿对象路径确定对象形状的点...对象Object:画布上的圆、正方形或直线 箭头工具Arrow tool:使用此工具抓取、调整大小和旋转对象 节点工具Node tool:使用此工具添加、移动和选择节点 开始绘图 要开始绘图,请打开web

    5.6K00
    领券