- 博客(17)
- 收藏
- 关注
原创 渲染的本质:纹理采样时如何确定正确的mipmap level
图形学程序员和其他软件程序员有一些不同,就是很多图形api是硬件实现的,除非很深入的研究,否则一些问题总是建立在猜测上,不利于理解问题的本质。本系列文章会整理我学习中遇到的一些问题,来揭示图形api的内部实现,材料来源于网络,如有错误,欢迎指正。纹理采样时如何自动获取特定的mipmap等级我们知道如果纹理开启了mipmap,离相机越远的表面,在进行纹理采样时会使用更低的mipmap等级,来提升性能。具体如何提升性能,可以查看笔者关于纹理过滤(Texture filtering)本质的文章。下..
2020-08-13 18:38:56
8822
4
原创 Unity URP 渲染管线着色器编程 104 之 镜头光晕(lensflare)的实现
在SRP管线中是不支持Unity原有的LensFlare配置的,也就是说如果在URP或者HDRP管线下要使用Lens Flare,需要自己实现改功能。本节介绍一个HDRP的官方DEMO工程 FontainebleauDemo 中使用到的LensFlare功能。该LensFlare模块只需少量的修改就可以在URP管线下使用,但是如果要适配移动端设备,需要做一些修改,同时也可以进行一些性能优化。当然LensFlare的实现不止这一种思路,也可以在屏幕后处理里得到同样的效果,但是屏幕后处理对于移动端设备来说
2020-07-30 19:52:02
5013
1
原创 Unity URP 渲染管线着色器编程 103 之 创建高级水体材质--几何波
上一节我们得到了一个简单但是功能完备的曲面细分着色器的模板,而且细心的朋友可能已经注意到上一节我们创建的shader的名字是tutorial/chapter_2/water,这次我们将在上一节的曲面细分着色器的基础上创建一个有物理波浪的水面材质最终我们会得到如下图的一个水面材质后续的文章里我们会对该shader继续进行扩展,增加浪花和水下焦散效果按照惯例,我们从零碎的知识点开始,最终提供一个完整的shader示例代码。根据摄像机远近控制曲面细分的精度要得到有几何波动的水面,作为水面载体的
2020-07-22 23:15:44
3258
3
原创 Unity URP 渲染管线着色器编程 102 之 曲面细分着色器
通过本节的学习可以得到如下的效果将一个低模的模型通过渲染管线的曲面细分功能得到一个高模的结果当我们开启渲染管线的tessellation开关时,我们传统意义上的顶点着色器功能就发生了改变。因为此时我们提交给IA阶段的内容不再被看作是有三个顶点(vertex)的三角面(triangle)(因为经过曲面细分之后才是三角面),而是看作一个有三个控制点(control point)的片(patch)。这里的控制点,可以理解成贝塞尔曲线的控制点或者PhotoShop钢笔工具的控制点,是控制点组成了这
2020-07-21 18:28:41
2336
原创 Unity URP 渲染管线着色器编程 101
随着Unity2019 STL版本的推出,URP管线已经可以作为基础渲染管线进行商业游戏和应用的开发。而原有兼容builtin管线的第三方shader和插件默认是不兼容URP管线的,因此需要手动编辑已有shader使之兼容URP管线,甚至某些情况下要扩展URP渲染管线以实现一些特殊功能。本系列教程会基于URP管线,创建一系列自定义材质,来演示URP管线的使用。从易到难,主要涉及以下内容:URP 下如何进行纹理采样,如何获取系统变换矩阵等基础操作的使用 (本节内容)简单的光照模型(单光源,lamb
2020-07-20 23:59:32
3281
原创 渲染的本质: 纹理过滤(Texture filtering)技术
在计算机图形学中,纹理过滤或者说纹理平滑是在纹理采样中使采样结果更加合理,以减少各种人为产生的穿帮现象的技术。纹理过滤分为放大过滤和缩小过滤两种类型。对应于这两种类型,纹理过滤可以是通过对稀疏纹理插值进行填充的重构过滤(需要放大)或者是需要的纹理尺寸低于纹理本身的尺寸时(需要缩小)的一种抗锯齿过滤。简单来讲,纹理过滤就是用来描述在不同形状、大小、角度和缩放比的情况下如何应用纹理。根据使用的过滤算法...
2019-06-01 11:12:55
19587
1
原创 细谈纹理压缩格式
我们先不谈纹理压缩在做什么,我们先看下自然状态下没有压缩的纹理的问题不压缩的纹理有什么问题目前的渲染管线中,对于3D物体表面的细节,主要还是靠纹理贴图来表现,分辨率越高,精度越高的纹理,在细节表现上自然越强,但是同时会导致内存开销增大,以及带宽等问题。占用内存过大对于RGBA四通道的纹理,每像素需要8bits*4=32bits=4Bytes的空间。使用512X512的贴图,一张图就需要占用...
2019-04-22 18:01:19
3251
原创 基于SRP创建自定义渲染管线
这篇文章为翻译文章,为避免翻译的文章不在原创列表列里,设置为原创,特此声明原文地址: https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-pipeline/创建一个管线资源和实例剔除、过滤、排序、渲染保证内存干净提供一个好的编辑实践这是关于unity的可编程渲染管线的第一个教程。...
2019-01-12 15:40:03
2770
2
原创 PBR Part Ⅱ 直接光照篇
这篇文章为翻译文章,为避免翻译的文章不在原创列表列里,设置为原创,特此声明原文地址: https://learnopengl.com/PBR/TheoryLighting照明前一篇教程中我们介绍了PBR渲染的基本原理。这个教程中我们会把前面讨论的原理使用直接光源(点光源、平行光、聚光灯等)应用到真实的渲染中。让我们重新看一下前面讲的反射方程:我们现在已经知道了这个公式是如何进行处...
2018-12-11 14:53:39
1217
原创 PBR PartⅠ 原理篇
原文地址: https://learnopengl.com/PBR/Theory原理PBR, 基于物理的渲染是多种渲染技术的集合,而这些技术一定程度上是基于现实世界物理规律的。因为基于物理的渲染是以一种物理上可信的方式模拟光照,因此相比于传统经验式的方式(Phong and Blinn-Phong)更加真实。而不仅仅是视觉效果上更加真实,艺术家们可以根据一些可测量的真实数据(表面辐照度、光滑...
2018-12-10 19:46:42
1954
1
原创 Unity异步加载和读取外部图片资源
后台线程读取本地或者云端png\jpg图片。背景:做VR开发中,最经常用到的一个功能就是加载外部的全景图,并且在头盔里显示。但是一张4K的全景图动辄10M左右的大小,而且需要占用24M(4K 的jpg格式,一个像素24bit-RGB)内存。如果在主线程里做加载,会明显感觉到卡顿,而在VR模式下用户对卡顿 的感知会被放大。幸运的时Unity的新版本中为我们提供了在辅助线程(worker t...
2018-10-25 19:35:03
7568
5
原创 Unity编辑器扩展:如何把asset 格式的资源转成png
Assets Store 上提供了大量的优秀素材给开发者使用,包括模型贴图UI音乐等等。但是一些上传者可能出于特殊原因,上传的素材格式是unity内置的.asset 格式,这样的格式对于直接拿来在unity中使用的开发者当然没有影响,但是遇到素材本身不是完全符合需求,需要做一些修改的情况,特殊的.asset 格式的文件就阻止了我们把这些素材拿到其他第三方工具(PS ,3dMax)修改的可能。所以本
2017-12-05 18:55:22
6525
3
原创 Unity编辑器扩展:如何把图集(Atlas)拆分成单个图片
游戏开发中可能会用到商店下载的图集,但是如果只是用到一部分,却把整个图集打包到项目则明显是不划算的。可以让美术同事单独把需要的图片切出来,但是图源比较多的话也是一个不小的工作。既然能够拿到切好的图集数据,是不是可以通过代码自动生成切好的小图呢,答案当然是肯定的。这里提供一个小工具,操作很简单,在Project下选择要切出小图的Sprite,然后菜单Tools/SpriteAtlas就会在Assets
2017-08-04 17:52:55
15542
3
原创 OpenGL ES 之OpenGL ES 1.X的渲染管线
本文图片和内容来自OpenGL ES 是OpenGL三维图形API的子集,主要针对手机等嵌入式设备。OpenGL ES主要分为两个版本一个是OpenGL ES1.x,其采用的是固定功能渲染管线,可以由硬件GPU支持或用软件模拟实现,渲染能力有限,在纯软件模拟情况下性能也较弱。另一个就是OpenGL ES 2.0,其采用的是可编程渲染管线,渲染能力大大提高。OpenG
2016-10-12 19:14:29
1091
原创 Gear VR 入门教程之一 Hello World
这是一系列Gear VR 的入门文章,会一直更新到一个功能完善的游戏DEMO,博主本身也是新手,如有错误还请指正本节为一个简单的VR版HellowWorld的实现,因为没有代码,所以没有项目以供下载。之后的内容会更新到Git仓库以供下载。首先声明开发环境:操作系统:win10Android SDK 和JDK是必需的,具体配置请google之,不专属于Gear VR知识点范畴
2016-08-30 18:46:44
5492
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人