
[图形学基础]
文章平均质量分 96
桑来93
time will tell
展开
-
图形学基础|移动端GPU架构
图形学基础|移动端GPU架构文章目录图形学基础|移动端GPU架构一、前言二、移动端GPU架构2.1 为什么移动端选择TBDR2.2 FrameData2.3 PowerVR的HSR技术三、基于TBDR的渲染优化参考博文一、前言现代移动端GPU架构大多为TBDR(Tile-Base-Deffered-Rendering)。本文摘录了一些相关博文的介绍。以下是笔者的笔记。二、移动端GPU架构2.1 为什么移动端选择TBDR移动端优先考虑功耗。功耗 -> 耗电量 -> 芯片大小对原创 2021-09-18 15:18:15 · 2417 阅读 · 0 评论 -
图形学基础|各项异性与头发渲染
各项异性与头发渲染文章目录各项异性与头发渲染一、前言二、各向异性光照2.1 各向异性光照现象2.2 ShadingModel扩展三、头发光照模型3.1 Kajiya-Kay Model3.1.1 Strand based Anisotropy3.1.2 Kajiya-Kay经验模型3.1.3 基于Kajiya-Kay的卡通头发3.2 Marschner Model3.2.1 着色模型公式3.2.2 UE头发材质和着色器代码四、头发建模和制作技巧4.1 头发模型建模4.2 头发贴图4.3 毛发渲染的排序问题原创 2021-06-22 21:04:46 · 8550 阅读 · 1 评论 -
图形学基础|屏幕空间反射(SSR)
图形学基础|屏幕空间反射(SSR)文章目录图形学基础|屏幕空间反射(SSR)一、前言二、反射技术概述2.1 环境贴图反射2.2 IBL反射2.3 平面反射(Planar Reflections)2.4 屏幕空间反射(Screen Space Reflection)2.4.1 SSR的基本原理2.4.2 SSR的优缺点三、SSR(Screen-Space Reflection)实现3.1 Efficient GPU Screen-Space Ray Tracing3.1.1 2D Raymarching v原创 2021-09-04 17:09:04 · 25147 阅读 · 6 评论 -
图形学基础|实时阴影渲染
图形学基础|实时阴影渲染文章目录图形学基础|实时阴影渲染一、前言二、Standard Shadow map2.1 基本原理2.2 ShadowMap问题2.3.1 精度问题2.3.2 深度偏移问题2.3.3 走样问题2.3 实现基础阴影三、PCF(Percentage-Closer Filtering)3.1 软阴影和硬阴影3.2 PCF原理3.3 实现四、PCSS(Percentage-Closer Soft Shadows)五、VSM(Variance soft shadow mapping)5.1原创 2021-09-02 21:53:32 · 1434 阅读 · 0 评论 -
图形学基础|环境光遮蔽(Ambient Occlusion)
图形学基础|环境光遮蔽(Ambient Occlusion)文章目录图形学基础|环境光遮蔽(Ambient Occlusion)一、前言二、SSAO(Screen space ambient occlusion)3.1 遮挡计算3.2 模糊SSAO三、HBAO(Horizon Based Ambient Occlusion)3.1 水平角3.2 实现四、GTAO(Ground Truth-based Ambient Occlusion)4.1 算法核心思想4.2 实现参考博文一、前言在现实世界中,仅有原创 2021-08-30 17:36:00 · 17199 阅读 · 0 评论 -
图形学基础|基于SDF的卡通阴影图
图形学基础|基于SDF的卡通阴影图文章目录图形学基础|基于SDF的卡通阴影图一、前言二、SDF(Signed Distance Field)三、阴影图生成3.1 SDF生成3.2 插值参考博文一、前言回顾之前做的卡通渲染,角色面部阴影是靠一张阴影贴图实现的。为了更好地控制角色的脸部阴影,通过计算脸部朝向与光照方向的夹角和一张单色的FaceMap来判断。FaceMap的每个像素表示:该像素判断为阴影时候需要达到的夹角。例如:当方向光正对角色的时候,夹角为0°,对应的值为0,此时,FaceMap原创 2021-08-27 18:32:52 · 12474 阅读 · 4 评论 -
图形学基础|皮肤渲染
图形学基础|皮肤渲染文章目录图形学基础|皮肤渲染一、前言二、次表面散射(Subsurface Scattering)三、扩散剖面(Diffusion Profile)四、基于模糊的皮肤渲染4.1 对皮肤的扩散剖面高斯和拟合4.2 屏幕空间模糊五、预积分皮肤渲染5.1 Wrap Light5.2 PreIntegrated Lut5.2.1 处理Surface Curvature5.2.2 处理Bump Normal5.3 渲染实现5.3.1 曲率计算5.3.2 法线处理5.3.3 高光选择参考博文一、前原创 2021-08-20 12:56:58 · 1940 阅读 · 2 评论 -
图形学基础|基于LTC的面光源渲染
图形学基础|基于LTC的面光源渲染文章目录图形学基础|基于LTC的面光源渲染一、前言二、LTC(Linearly Transformed Cosines)2.1 面光源2.2 线性变化球形分布2.2.1 定义2.2.2 性质2.3 以LTC拟合BRDF三、使用LTC进行多边形光源着色3.1 Shading with Constant Polygonal Lights3.2 Shading with Textured Polygonal Lights四、渲染4.1 采样LTC4.2 裁剪4.3 线积分4.4原创 2021-08-13 19:00:38 · 2542 阅读 · 0 评论 -
3D数学 | 判断点是否在三角形内
转载自 判断点是否在三角形内给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内。这是游戏设计中一个常见的问题。需要注意的是,这里假定点和三角形位于同一个平面内。本文介绍三种不同的方法,由浅入深一 内角和法连接点P和三角形的三个顶点得到三条线段PA,PB和PC,求出这三条线段与三角形各边的夹角,如果所有夹角之和为180度,那么点P在三角形内,否则不在,此法直观,但效率低下。...转载 2019-03-11 10:14:50 · 1017 阅读 · 0 评论 -
图形学基础|泛光(Bloom)
图形学基础|泛光(Bloom)文章目录图形学基础|泛光(Bloom)一、前言二、Bloom概述2.1 亮度提取2.2 模糊2.2.1 高斯模糊2.2.2 可分离滤波2.2.3 双重模糊2.3 叠加2.4 小结参考博文一、前言泛光(Bloom) 效果会产生从图像明亮区域边界向外延伸的光线条纹,给人的感觉是极其明亮的光线压制住了摄像机。这是一种现实世界中的光现象,通过它能够以较为适度的渲染性能成本极大地增强渲染图像的真实感。通常在后处理阶段实现。泛光效果图:二、Bloom概述Bloom的实现非常原创 2021-07-22 17:58:21 · 10540 阅读 · 1 评论 -
图形学基础|景深效果(Depth of Field/DOF)
图形学基础|景深效果(Depth of Field/DOF)文章目录图形学基础|景深效果(Depth of Field/DOF)一、前言二、景深效果2.1 物理原理2.2 弥散圆量化三、景深实现3.1 非物理的简单实现3.2 基于物理的景深效果参考博文一、前言**景深(DOF)**是模拟摄像机镜头对焦特性的一种常见的后处理效果。在现实生活中,相机只能对特定距离内的物体进行锐利的聚焦,离相机较近或较远的物体会有些失焦。模糊不仅提供了一个关于物体距离的视觉提示,还引入了焦外成像(Bokeh,散景)。原创 2021-07-21 10:36:52 · 13842 阅读 · 2 评论 -
图形学基础|抗锯齿(Anti-Aliasing)
图形学基础|抗锯齿(Anti-Aliasing)文章目录图形学基础|抗锯齿(Anti-Aliasing)一、前言二、锯齿2.1 采样理论2.2 分类三、抗锯齿概述3.1 SSAA(Supersampling Anti-Aliasing)3.2 MSAA (Multisample Anti-Aliasing)3.2.1 Coverage(覆盖)和Occlusion(遮挡)3.2.2 MSAA Resolve(MSAA 解析)3.2.3 MSAA与延迟渲染四、时间抗锯齿(Temporal Anti-Alia原创 2021-07-16 22:18:17 · 10551 阅读 · 4 评论 -
图形学基础|深度缓冲(DepthBuffer)
图形学基础|深度缓冲(DepthBuffer)文章目录图形学基础|深度缓冲(DepthBuffer)一、前言二、线性深度与非线性深度2.1 线性深度2.2 非线性深度2.3 深度可视化三、深度测试3.1 Early-Z3.2 Early-Z失效四、深度冲突4.1 缓解措施4.2 Reverse-Z五、深度数据的应用参考博文一、前言在实时渲染中,**深度缓冲(Depth Buffer)**扮演着非常重要的角色。通常,深度缓冲区记录着屏幕对应的每个像素的深度值。通过深度缓冲区,可以进行深度测试,从而确原创 2021-07-12 15:19:29 · 5964 阅读 · 1 评论 -
图形学基础|PBR回顾
图形学基础|PBR回顾一、前言在辐射度量学和渲染方程中简单介绍了辐射度量学以及提及了渲染方程。实时渲染,其本质就是模拟光线与各类材质进行交互的过程,在有限的时间内尽可能准确地近似求解渲染方程。这就不得不提到基于物理的渲染(Physically Based Rendering,PBR)。在之前学习OpenGL的过程中,也曾学习过一些PBR相关的基础,大多来自Learn OpenGL PBR Theory。图形学基础 | 基于物理的渲染理论(PBR)图形学基础 | 基于物理的渲染PBR之直接光照原创 2021-07-07 21:48:49 · 1633 阅读 · 0 评论 -
图形学基础|球谐光照(Spherical Harmonics Lighting)
球谐光照(Spherical Harmonics Lighting)文章目录球谐光照(Spherical Harmonics Lighting)一、前言二、球谐函数2.1 基函数2.2 投影与重建2.3 应用三、漫反射环境光3.1 IrradianceMap3.2 数学推导3.3 实践参考博文一、前言在学习图形渲染的过程中,一直對球谐函数(球谐光照)有一点了解,但没有亲手实现过。关于球谐函数的数学概念是比较复杂的,笔者也实在无法完全理解,这篇文章只能从做东西的角度来说,公式是如何和代码进行对应的。原创 2021-07-03 19:50:47 · 13052 阅读 · 1 评论 -
辐射度量学和渲染方程
辐射度量学和渲染方程文章目录辐射度量学和渲染方程一、前言二、辐射度量学简述2.1 光的辐射2.1.1 辐射能(Radiant energy ):总击中2.1.2 辐射通量(Radiant flux ):每秒击中2.1.3 辐照度(Irradiance):每秒每单位面积的击中2.1.4 辐射强度(Radiant Intensity):单位立体角内的辐射功率2.1.5 辐射度( radiance ):每单位投影面积、每单位立体角上的辐射通量2.2 光与颜色2.2.1 辐射量和光学量的转换2.2.2 CIE标准原创 2021-06-17 18:03:38 · 655 阅读 · 1 评论 -
图形学基础 | 裁剪算法
裁剪算法待补充计算机图形学之裁剪* 3D裁剪* 2D裁剪裁剪算法: 用来消除显示区域外的图形部分.二维裁剪算法* 点的裁剪* 线段的裁剪(直线段)* 区域裁剪(多变形裁剪)二维点的裁剪裁剪窗口为一个标准的矩形:Xmin<=X<=XmaxYmin<=Y<=Ymax二维线段的裁剪线段与窗口边界的求交运算耗时.因此.较少交点的计算是每一种...原创 2019-04-05 22:24:46 · 2544 阅读 · 0 评论 -
图形学基础 | UnityShader入门精要学习笔记(5-6章)
Unity Shader学习 第五章 基本的Shader学习Unity的场景是一个天空盒(skybox). 不是纯色的#pragma vertex vert#pragma fragment frag告诉编译器 哪个函数是顶点着色器. 哪个函数是片元着色器SV_POSITION 告诉顶点着色器. Unity输出 是裁剪空间中的顶点坐标.SV_Target 屏幕输出UNITY_MAT...原创 2019-04-19 21:52:26 · 265 阅读 · 0 评论 -
从主机的世代演进看渲染技术的发展
转载自 从主机的世代演进看渲染技术的发展觉得是一篇很棒的文章!!!主机的世代演进,除了硬件机能大幅提高之外,渲染技术也有世代级别的进化大家对主机世代演进已经是非常熟悉了,而对图形技术演进应该还是比较陌生的。这次我就带着大家,随着主机世代的演进,看图形技术的发展。目录:世纪前 - 2D到3D的时代PS2/Xbox - 可编程管线的世代PS3/xbox360 - 延迟渲染的世代...转载 2019-04-19 23:01:28 · 571 阅读 · 0 评论 -
图形学基础 | ERP采样成为CubeMap
https://stackoverflow.com/questions/37929806/opengl-rendering-to-cubemap关于 CubeMap可作为天空盒,作为背景.可作为环境贴图ERP采样成为CubeMap这个网站里面有很多免费使用的HDR光照贴图 sIBL需要注意的是,这个网站里面的HDR贴图并不是CubeMap的形式,而是Equirectangula...原创 2019-05-05 10:45:45 · 2146 阅读 · 0 评论 -
图形学基础 | CubeMap 立方体贴图
CubeMap 立方体贴图一个包含6个2D纹理的贴图它是通过一个 方向向量 来进行采样的. 访问到正确的face面.创建立方体贴图GL_TEXTURE_CUBE_MAP 有六个面,每个面都要绑定.比如:GL_TEXUTRE_CUBE_MAP_POSITIVE_X + i;…在Shader 采样器中,这么写:samplerCube cubemap;进行采样:FragCo...原创 2019-04-29 20:26:48 · 3952 阅读 · 1 评论 -
图形学基础 | billboarding公告板(布告板)
公告板 billboarding根据 观察方向 来确定 多边形(模型) 面朝方向 的技术 叫公告板(布告板).给定表面一个法向量n和近似向上的方向u通过创建一组由三个互相垂直的向量.就可以确定公告板的方向了.有三类公告板:Screen-Aligned Billboard 对齐于屏幕的公告板World-Oriented Billboard 面向世界的公告板Axial Billb...转载 2019-04-29 21:40:47 · 2783 阅读 · 0 评论 -
图形学基础 | OpenGL CubeMap图像方向问题
http://www.3dcpptutorials.sk/index.php?id=24https://stackoverflow.com/questions/11685608/convention-of-faces-in-opengl-cubemappinghttps://blog.youkuaiyun.com/Nhsoft/article/details/1398630CubeMap贴图的问题困...原创 2019-05-05 16:05:14 · 2476 阅读 · 3 评论 -
图形学基础 | 基于物理的渲染PBR之基于图像的光照IBL(Diffuse篇)
转载自 GraphicsLab Project之基于物理的着色系统(Physical based shading) - 基于图像的光照(Image Based Lighting)(Diffuse篇)0 绪论在 图形学基础 | 基于物理的渲染PBR之直接光照 中. 直接光照可以简化 反射方程中的积分运算. 转而使用简单的每个独立光源计算光照直接叠加.其中. 我们没有加入环境光. 或者说我们...转载 2019-05-08 16:01:16 · 3273 阅读 · 1 评论 -
图形学基础 | mtl文件详解
mtl文件详解MTL材质详解.mtl 文件(Material Library File) 是材质库文件.一个.mtl文件可以包含一个或多个材质定义.对于每个材质都有其颜色.纹理和反射贴图的描述,应用于物体的表面和顶点.以下是一个材质库文件的基本结构:newmtl mymtl_1 材质颜色光照定义 纹理贴图定义 反射贴图定义newmtl mymtl_2 材质...转载 2019-04-30 21:32:53 · 8428 阅读 · 2 评论 -
图形学基础 | 四元数与空间旋转
Understanding Quaternions 中文翻译《理解四元数》四元数与三维旋转四元数(x,y,z,w)纯四元数类似于纯虚数,即实部 w 为0的四元数xi+yj+zk单位四元数单位四元数(Unit quaternion)可以用于表示 三维空间里的旋转.它与常用的两种方式 三维正交旋转矩阵 和 欧拉角 是等价的.可以避免了 欧拉角表示中的 万向锁 的问题.比...原创 2019-05-10 08:21:23 · 1923 阅读 · 0 评论 -
图形学基础 | 基于物理的渲染PBR之直接光照
PBR的理论GraphicsLab Project之基于物理的着色系统(Physical based shading)-直接光照0 序列PBR 其实是一个光照模型.在经典的光照模型中:漫反射是 Lambert镜面反射是 blinn-Phong环境光是 c * (1-AO)PBR:漫发射依然是 Lambert(多出了一个PI).镜面反射是 Cook-Torrance....原创 2019-05-08 10:47:15 · 1401 阅读 · 0 评论 -
图形学基础 | 基于物理的渲染PBR之基于图像的光照IBL(Specular篇上)
转载自 GraphicsLab Project之基于物理的着色系统(Physical based shading) - 基于图像的光照(Image Based Lighting)(Specular篇)(一)读大神的讲解真的是非常清晰.IBL中的Specular部分:Lo=∫ΩfsLi⋅n⋅widwi\begin{array}{l}L_o=\int_\Omega f_sL_i\cdot n...转载 2019-05-15 22:02:07 · 1129 阅读 · 0 评论 -
图形学基础 | UnityShader入门精要学习笔记(1-4章)
图形学基础 | UnityShader入门精要学习笔记(1-4章)Unity Shader学习 第二章渲染流水线渲染状态定义了场景中的每个网格/物体如何被渲染.如 材质 剔除 裁剪 混合 深度测试等.Draw Call如何让CPU和GPU一起工作?让CPU和GPU并行工作. 使用一个 命令缓冲区 .由CPU添加命令. GPU从中读取命令. 添加和读取都是相互独立的.CPU命...原创 2019-04-19 21:36:40 · 422 阅读 · 0 评论 -
图形学基础 | Gamma校正
http://geekfaner.com/unity/blog1_gamma.htmlhttps://gameinstitute.qq.com/community/detail/120396随着真实性更高的基于物理渲染(PBR)的到来,线性空间(Linear space)光照计算也越来越被经常提及。虽然线性空间和与之“对立”的伽马空间(gamma space)是简单而重要的概念。但很多...转载 2019-05-03 19:52:36 · 917 阅读 · 0 评论 -
图形学基础 | 光线追踪
什么是光线追踪什么是光线追踪解密NVIDIA光线追踪技术光线追踪是三维计算机图形学中的一种特殊渲染算法. 是一种基于模拟真实光线弹射路径渲染成像的技术.基本工作原理:从取景器发出一定量的射线,投射到三维物体上,在三维空间中进行反弹,折射,并根据这个物体本身的一些材质属性,再综合光线路径等信息,计算出这个物体最终在画面中每一个像素点的颜色信息。这种模拟真实光线弹射的算法是目前所出现的能够得...原创 2019-04-11 09:24:16 · 832 阅读 · 0 评论 -
图形学基础 | 详解3D中的obj文件格式
详解3D中的obj文件格式Obj文件格式是一种简单的单独表示3D几何图元的文件格式——也就是,顶点的坐标,每个顶点纹理的UV坐标,顶点法向量,以及组成多边形的面的顶点坐标、以及纹理UV坐标序列。面的顶点默认为逆时针顺序,法向量不是必须的。OBJ文件并非归一化的,但是可以在注释中加入缩放信息。1. 文件格式(File Format)以哈希字符(#)开始的一行表示注释。# this i...转载 2019-04-07 10:52:03 · 8188 阅读 · 0 评论 -
图形学基础 | 简单易用的图像库stb_image
简单易用的图像库stb_image[编程开发]STB image读取学习stb-image首页https://www.oschina.net/p/stb-image)采用的加解码库:stb_image官方:http://nothings.org/stb_image.h用于解析图片格式:JPG, PNG, TGA, BMP, PSD, GIF, HDR, PICstb_image...原创 2019-04-06 23:30:22 · 3192 阅读 · 3 评论 -
图形学基础 | 如何计算切线空间的切线和副切线
http://www.cnblogs.com/ThreeThousandBigWorld/archive/2012/07/16/2593892.htmlhttp://blog.chinaunix.net/uid-26651460-id-3083223.htmlhttp://stackoverflow.com/questions/5255806/how-to-calculate-tangent...转载 2019-04-10 20:31:27 · 1703 阅读 · 0 评论 -
图形学基础 | 3D裁剪之近面裁剪
近面裁剪转载 2019-04-06 16:53:16 · 2324 阅读 · 0 评论 -
图形学基础 | 将多边形点按照逆时针排序
将多边形点按照逆时针排序【计算几何】多边形点集排序在三角形做了裁剪算法之后.需要重新根据所有的顶点按顺序组成三角形.这样才能恢复窗口内的应有的拓扑结构.然后对组成的三角形逐个进行绘制渲染.主要参考的上面两篇文章的代码.typedef struct Point{ int x; int y;}Point;//若点a大于点b,即点a在点b顺时针方向,返回true,...转载 2019-04-06 15:53:10 · 3686 阅读 · 0 评论 -
图形学基础 | 法线贴图
法线贴图为什么需要切线空间为什么需要法线贴图物体模型由成百上千个平坦的三角形围成.三角形上附加纹理的方式来增加额外细节. 提升真实感.但是近看时,就有问题了.变成平面.缺乏细节.原因:物体表面并非平坦的. 而是表示出无数(凹凸不平的)细节.如果以光的视角来看这个问题:是什么使表面被视为完全平坦的表面来照亮?答案会是 表面的法线向量。从光照的角度考虑:只有一件事决...原创 2019-04-10 11:35:27 · 2600 阅读 · 0 评论 -
图形学基础 | Mipmap生成
首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小。直到1X1。把缩小的图都存储起来。在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素。如果贴图的基本尺寸是256x256像素的话,它mipmap就会有8个层级。每个层级是上一层级的四分之一的大小,依次层级大小就是:128x128;64x64;32x32;16x16;8x8;4x4...原创 2019-04-05 10:36:57 · 6304 阅读 · 1 评论 -
图形学基础 | 计算机图形学MOOC学习笔记
计算机图形学 学习笔记视频链接 http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce补充一下一些图形学基础算法知识.我主要想学习的部分内容:光栅图形学算法3D图形变换光照模型 / 纹理映射 / 阴影处理光栅化部分直线扫描转换算法:DDA,中点画线算法,Bresenham算法多边形扫...转载 2019-03-30 22:57:38 · 859 阅读 · 0 评论 -
图形学基础 | 三角形光栅化
从零实现3D图像引擎:(15)三角形的光栅化1 为什么需要光栅化三角形不能总让我们的引擎显示线框,要支持实心颜色、光照还有纹理贴图,这些都需要光栅化一个三角形作为支持2 三角形的类型3 平底三角形光栅化光栅化平底三角形的原理很简单,就是从上往下画横线。在图里我们取任意的一条光栅化直线,这条直线左边的端点x值为XL,右边的为XR。y值就不用考虑了,因为这些线是从上往下画的...转载 2019-03-30 17:18:18 · 3357 阅读 · 1 评论