![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机图形学入门
文章平均质量分 86
武功高强的盲僧
这个作者很懒,什么都没留下…
展开
-
Games202学习笔记1:Recap of CG Basics
学习教程来自:GAMES202-高质量实时渲染笔记1. Basic GPU hardware pipeline渲染管线2. OPenGL是一系列在CPU端调用的API用来调用GPU工作。优点:跨平台。缺点:碎片化,有很多版本。语言风格为C style,非面向对象。渲染过程类比:放置物体/模型:模型声明(VBO),模型变换矩阵(glTranslate等)放置画架:声明相机(gluPerspective等),使用/声明一个FrameBuffer画布和画架关系:一个Pass可以原创 2022-03-16 17:40:06 · 343 阅读 · 2 评论 -
TA学习笔记5120:基于物理的相机概述
相机的一些原理和在引擎中的使用原创 2022-02-25 10:50:14 · 514 阅读 · 0 评论 -
技术美术知识学习5200:光追相关概念介绍
光线追踪、路径追踪、光线投射、光线步进的简介及光追的应用原创 2021-12-25 14:13:09 · 2217 阅读 · 0 评论 -
技术美术知识学习3200:混合模式及剔除
学习教程来自:【技术美术百人计划】图形 3.2 混合模式及剔除笔记1. 什么是混合模式?将当前已有颜色和即将绘制的颜色混合在一起的方式或算法。语法:代码说明Blend Off关闭混合(默认)Blend SrcFactor DstFactorcolor = shader输出颜色 * SrcFactor op GBuffer中的颜色 * DstFactorBlend SrcFactor DstFactor, SrcFactorA DstFactorA同上,额外指定原创 2021-11-28 10:53:00 · 643 阅读 · 0 评论 -
技术美术知识学习4500:景深
学习教程来自:【技术美术百人计划】图形 4.5 Dof景深基础笔记1. 什么是景深相机对焦点前后相对清晰的成像范围2. 景深的作用突出表达3. 移动端景深效果实现3.1 制作思路在后处理阶段,制作mask,分别渲染模糊场景和正常场景,再合并效果3.2 原图模糊处理在OnrenderImage对MainTex中的纹理模糊,传值给BlurTex,再进行混合Pass{ CGPROGRAM #pragma vertex vert #pragma fragment fr原创 2021-11-12 15:08:02 · 1107 阅读 · 0 评论 -
技术美术知识学习4400:抗锯齿概论
学习教程来自:【技术美术百人计划】图形 4.4 抗锯齿概论笔记1. 锯齿是怎么产生的从几何着色器阶段到光栅化的过程中,产生的走样2. 基本的抗锯齿2.1 MSAA(Multisample Anti-aliasing)增加采样点,再平均MSAA多一句,采样点会根据覆盖的情况自动调整(原文This position adjustment is called centroid sampling or centroidinterpolation and is done automatica原创 2021-10-22 21:11:22 · 358 阅读 · 0 评论 -
技术美术知识学习1220:矩阵运算
学习教程来自:【技术美术百人计划】图形 1.2.2 矩阵运算慢慢补一点前边的作业吧,希望能做完,比较基础的就简单记录下笔记1. 线性方程、线性代数、线性空间:线性方程:可加性、比例性。线性的方程。线性空间:变换后原点不变,直线仍然是直线,等比变化。非线性空间:空间扭曲,变换不等距,原点产生位移。2. 矩阵矩阵求解线性方程组矩阵对坐标的变换矩阵的定义:m x n 矩阵单位矩阵、零矩阵矩阵运算:加减法、数乘、乘法、一些运算法则矩阵转置:转置矩阵(注意Unity中的矩阵存储方式,行原创 2021-10-08 19:26:09 · 187 阅读 · 0 评论 -
技术美术知识学习4300:实时阴影
1原创 2021-10-03 10:29:13 · 1031 阅读 · 1 评论 -
技术美术知识学习4200:SSAO算法
学习教程来自:【技术美术百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽笔记0. 前言SSAO的使用一般在IPhone10及骁龙845之后的机型中使用1. SSAO介绍AO:环境光遮蔽 Ambient OcclusionSSAO:屏幕空间环境光遮蔽 Screen Space Ambient Occlusion 通过深度缓冲、法线缓冲计算AO2. SSAO原理2.1 样本缓冲深度缓冲:每一个像素距离相机的深度值法线缓冲:相机空间下的法线信息Position2.2 法线半球原创 2021-09-11 13:21:05 · 1851 阅读 · 7 评论 -
技术美术知识学习4100:Bloom算法
学习教程来自:【技术美术百人计划】图形 4.1 Bloom算法 游戏中的辉光效果实现笔记总结Bloom算法介绍模拟光辉效果的算法简单思路:提取较亮的部分进行模糊,然后与原图叠加后输出HDR:使用HDR可以使提取到亮度大于1的区域高斯模糊:使用高斯函数得到的高斯核去卷积图像二维高斯核:将运算的复杂度从 N x N x W x H 减少到了 2 x N x W x H (对称性使N可减少到N/2+1)Bloom算法实现(Unity)C#部分调用OnRenderImage函数获取纹理和传输参数原创 2021-08-28 09:25:02 · 845 阅读 · 0 评论 -
技术美术知识学习3600:纹理压缩
学习教程来自:【技术美术百人计划】图形 3.6 纹理压缩——包体瘦身术笔记总结什么是纹理压缩纹理压缩是为了解决内存、带宽问题,专门在计算机图形渲染系统中存储纹理而使用的图像压缩技术为什么要纹理压缩图片图片文件的存储格式,在磁盘、内存中存储和传输。缺点: 1. 压缩时基于整张图片,像素之间存在依赖关系,无法随机解析(并发性不好) 2. 只能解析出RGBA格式,无法减少显存和带宽的占用 3. 需要先由CPU进行解压再交给GPU读取例如:JPG、PNG等纹理显卡能够直接进行采样的纹理数据格式,加原创 2021-08-10 18:34:55 · 775 阅读 · 0 评论 -
技美知识学习3700:现代移动端的TBR和TBDR渲染管线
学习教程来自:【技术美术百人计划】图形 3.7 移动端TB(D)R架构基础移动端GPU的TB(D)R架构1. 当前移动端GPU概况市场占比概况(数据来自学习教程PPT)1.1 移动端和桌面端功耗对比移动端和桌面端功耗对比(数据来自学习教程PPT)差距约100倍1.2 移动端和桌面端带宽对比移动端和桌面端带宽对比(来自学习教程PPT)差距约10倍2. 名词解释SoC(System on Chip):芯片。把CPU GPU 内存 通信基带 GPS模块等整合在一起的芯片原创 2021-07-24 22:14:12 · 2526 阅读 · 3 评论 -
技美知识学习3500:Early-z和Z-prepass
学习教程来自:【技术美术百人计划】图形 3.5 Early-z和Z-prepassEarly-z和Z-prepass1.深度测试Depth Test,用来解决物体可见遮挡性顶点着色器->曲面细分->几何着色器->光栅化->片元着色器->透明度测试->模板测试->深度测试->混合渲染流程详见:技美知识学习1100:渲染管线没有通过测试的片元会被丢弃,导致这些片元的计算量被浪费2.提前深度测试Early-Z,用来解决过多不必要的片元计算问题(1中原创 2021-07-17 16:42:53 · 1807 阅读 · 4 评论 -
技美知识学习1210:向量基础
学习教程来自:【技术美术百人计划】图形 1.2.1 向量基础向量的计算1.什么是向量1.1.向量的定义只有大小和方向的线段,从开始位置指向结束位置几何意义:位置变化的方向和大小1.2.向量与标量只有大小,没有方向几何意义:大小1.3.向量与点既没有大小,也没有方向几何意义:位置1.4.零向量大小为0的向量,没有方向几何意义:没有发生位移2.如何计算2.1.标量和向量的运算乘法 除法运算几何意义:将位移加倍(若为标量为负,则先反向再加倍)2.2.向量的模长每个分量的平方原创 2021-07-11 21:45:27 · 224 阅读 · 0 评论 -
技美知识学习3300:TESS and GS
学习教程来自:【技术美术百人计划】图形 3.3 曲面细分与几何着色器 大规模草渲染Unity版本:Unity 2019.3.15f1感谢老师的传道授业解惑,本篇用于总结复习和实践1. 知识基础TESS能做什么?将曲面细分:直线逼近曲线、正方体细分成球体增加凹凸感,与置换贴图结合使用对比图优化:根据既定规则(如,距离)控制细分面数GS能做什么?几何动画:爆炸破碎效果草地生成OpenGL中的着色顺序图片来源2. TE原创 2021-07-03 11:00:15 · 373 阅读 · 0 评论 -
技美知识学习1100:渲染管线
学习教程来自:【技术美术百人计划】图形 1.1 渲染流水线渲染管线通过一系列的处理,将3D元素转换为2D图像。工作流程是线性的0.整体路程应用阶段几何阶段光栅化阶段逐片元阶段后处理1.应用阶段1.1.基本场景数据场景物体数据:Transform(位置、旋转、缩放)+网格数据(顶点位置、UV、法线、切线等)摄像机数据:参数(位置、朝向、远近裁剪面、透视方式、比例)光源数据:类型(方向光等)+参数(位置、方向、角度等)阴影数据:是否需要阴影、阴影参数(对应官员、强度、级联参数、原创 2021-07-11 14:42:39 · 176 阅读 · 0 评论 -
技美知识学习3400:延迟渲染
学习教程来自:【技术美术百人计划】图形 3.4 延迟渲染管线介绍延迟渲染渲染路径 Rendering Path光照的实现方式渲染使用的光照流程渲染方式前向渲染 Forward Rendering待渲染几何体->顶点着色器->片元着色器->渲染目标每个顶点、片元执行着色器代码时,都需要读取所有的光照信息(包括很远的光源)光源的处理规则参考这篇文章 Real-Time Rendering笔记(6):正向渲染和延迟渲染Unity中,开启Frame Debug,以Plane原创 2021-07-10 10:57:17 · 974 阅读 · 0 评论 -
UE4水效果学习
本篇着重点偏向于地形的制作(LandMass+地形材质)地形材质参考教程:Quixel Tutorial: Landscape Blend Material with Megascans in Unreal Engine 4New Megascans Landscape Blend Material in Unreal Engine 4主要思路:创建材质蓝图,使用LandLayerBlend节点,混合多个Layer的材质,最后在地形绘制完成后的蓝图笔刷中配置材质以生效1. 导入材质贴图此案例中原创 2021-05-11 19:35:38 · 1601 阅读 · 5 评论 -
雨天效果Shader学习
学习教程来自:Rain Wetness Shader - UE4 Materials 101UE4版本:4.26.2Episode 13基于UE4 Start Content中的地砖材质 M_Brick_Clay_Old ,对原输出的Base Color,Roughness增加计算,额外添加了Specular的计算(原本为默认值0.5)。大致思路如下:减少材质的Roughness,Specular(教程中按照0.07,0.3的比例减少),减少后与之前的值进行Lerp在分别输出,Lerp的Alp原创 2021-04-19 17:36:46 · 1166 阅读 · 3 评论 -
Shader效果学习2(UE4复现Unity中的风格化渲染)
Shader效果学习之前的随笔:Shader效果学习1(ShaderForge在UE4中的复现之翡翠效果+HatchTex+HalfTone).随笔目录Shader效果学习前言一、UE4中的LightDir,ViewDir,NormalDir二、Shader Forge中的Multiply三、在UE4中使用更多的参数四、蓝图1. 漫反射部分2. 高光部分3. 合并结果前言随笔记录了在《庄懂的技术美术入门课(美术向)》学习过程中,一些Unity渲染效果在UE4引擎中的复现。Unity中的效原创 2021-02-03 16:03:13 · 1292 阅读 · 1 评论 -
Shader效果学习1(ShaderForge在UE4中的复现之翡翠效果+HatchTex+HalfTone)
背景在《庄懂的技术美术入门课(美术向)》Lesson1课后作业中,一位学员制作了类似翡翠效果的卡通渲染Shader,效果图如下所示:现在想要做的事情是在UE4中复现这个渲染效果,效果图如下所示:实现过程根据Unity中实现的Shader,在UE4的材质连连看中复刻。Shader ForgeUE4材质其中遇到的问题:1.更改材质中的着色模型部分为无光照,否则总有自带的光照效果。2.LightDir函数在UE4中没有提供,查询一些资料后( UE4 材质里如何获取到平行光方向),得到解决方案原创 2020-12-03 17:24:42 · 855 阅读 · 4 评论 -
大象无形11.4.4 实战:创建新的渲染代理 笔记
遇到问题如下:书中的代码复制粘贴后,其中实例化的一行出错。严重性 代码 说明 项目 文件 行 禁止显示状态 详细说明错误(活动) E0322 不允许使用抽象类类型 “FTestCustomComponentSceneProxy” 的对象: MyProjectCPP C:\Users\Administrator\Documents\Unreal Projects\MyProjectCPP 4.25\Source\MyProjectCPP\Test\TestCustomComponent.cpp 46原创 2020-11-24 09:54:07 · 317 阅读 · 0 评论 -
Real-Time Rendering Fourth Edition读书笔记1
Real-Time Rendering Fourth Edition读书笔记1:第一章-第四章思维导图链接:链接:https://pan.baidu.com/s/1ic8O_y2mHdoc68tEFf6hOw提取码:0pwi原创 2020-10-16 13:58:01 · 133 阅读 · 0 评论 -
Shader入门精要读书笔记13
第15章-第20章噪声:使用一张噪声纹理实现更多的渲染效果(消融、波浪等)。消融效果:对应消融效果的纹理采样后,作为阈值控制当前片元是否被渲染。消融的边缘具有一定的宽度,其中渐变的颜色使用lerp函数混合。动态的消融效果需要根据时间改变阈值,通过加在物体上的脚本实现。消融后的片元需要同样在ShadowCaster的Pass中剔除,以产生正确的通盈效果。水波效果:对应水波效果的纹理采样后,作为切线空间下的表面法线。水面透射:GrapPass得到的屏幕纹理,在片元着色器中采样这个纹理得到透射颜色,原创 2020-09-04 14:41:23 · 180 阅读 · 0 评论 -
Shader入门精要读书笔记12
第13、14章 深度和法线纹理、非真实渲染实现更加贴近应用的渲染效果(运动模糊、雾、卡通风格、素描风格),往往需要更加巧妙的思路和数学计算。透视投影和正交投影的原理复习。2种获取深度和法线纹理的方法:延迟渲染将纹理存入G-buffer中;正确的设置RenderType,使用单独的Pass渲染得到纹理。脚本中相机的设置和纹理获取的代码实现,使用包装好的函数处理纹理采样后得到的线性的深度值。使用Frame Debugger查看深度纹理的渲染效果(远裁剪平面太远或太近效果变差)使用深度信息实现运动模原创 2020-08-28 13:21:09 · 121 阅读 · 0 评论 -
Shader入门精要读书笔记11
第12章 屏幕后处理效果总的来说把渲染出来的结果(Texture),类似于又用PS处理了一下。方法就是把不同的脚本加在摄像机上,脚本和Shader共同使画面具有不同的效果。OnRenderImage接口和Bilt函数的使用。创建基类PostEffectsBase,配置一些check函数。调整亮度、饱和度、对比度的实现:分别在脚本中定义3个对应的变量作为变化范围,赋值给Shader,在Shader中的片元着色器中,对每个片元进行计算,达到调整效果。边缘检测实现:卷积的介绍(卷积核,卷积计算,卷积的原创 2020-08-20 21:09:53 · 108 阅读 · 0 评论 -
Shader入门精要读书笔记10
第11章 让画面动起来这一章节的内容介绍了2种让图像移动的方法:根据时间变化,根据视角变化;书中分别列举了2种用途:动画效果(纹理,顶点),广告牌技术(顶点随ciewDir变化)。Unity中的内置事件变量介绍。纹理动画:帧序列、背景滚动。帧序列动画:从一张图中,有若干按照行列顺序排布的纹理(2D);在片元着色器中,通过时间函数,移动行列位置,换算为UV值并采样。计算过程:首先得到不超过总行列数的行列值,例如一行有8个(8列),则得到的column值为0-7(假设,超过总列数后,由于设置的纹理图原创 2020-08-18 10:22:54 · 84 阅读 · 0 评论 -
Shader入门精要读书笔记9
第十章 高级纹理对比之前学习的纹理(一维或二维),本章学习了更为复杂的纹理,包括立体纹理、渲染纹理、程序纹理。环境映射:使用立方体纹理实现的反射或折射效果。立方体纹理(Cubemap):从6张图像组成的3维立方体纹理中,从中心出发计算角度,然后采样得到颜色值。天空盒子实现:创建Skybox类型的材质,使用Unity自带的Shader,在详情界面中选择6个面对应的纹理(Clamp展开)。创建立方体纹理的3种方法:直接创建,设置纹理类型为Cubemap;创建Cubemap,赋值6个面;脚本生成。脚原创 2020-08-14 14:02:33 · 100 阅读 · 0 评论 -
Shader入门精要读书笔记8
第九章 更复杂的光照总的来说就是增加了光照的衰减、阴影计算,学习处理不同种类的光源(均基于前向渲染路径)。渲染路径简述:目前使用2种,前向渲染路径和延迟渲染路径。渲染路径的设定和使用:项目设置、摄像机设置、Pass中使用LightMode标签。各种LightMode标签名的用途:获取正确的光照变量值。前向渲染路径原理:在Pass中计算颜色缓冲区、深度缓冲区。Unity中对前向渲染路径中光源的限制(光源中设置Render Mode)。路径中的2种Pass:Base Pass和Additiona原创 2020-08-11 13:43:29 · 111 阅读 · 0 评论 -
Shader入门精要读书笔记7
透明效果2种透明效果的实现:Alpha Test、Alpha Blending渲染顺序的意义使用Unity提供的渲染队列解决不同的排序情景透明度测试实现:使用clip函数抛弃texColor.a低于阈值的片元(要么在,要么不在)...原创 2020-08-06 14:23:34 · 144 阅读 · 0 评论 -
Shader入门精要读书笔记6
Shader入门精要读书笔记6:第七章基础纹理纹理映射/纹素/UV坐标(左下角)单张纹理实现:_MainTex(顶点着色器->uv 片元着色器->纹素值)纹理详细信息中选项的设置(属性值、平铺模式、滤波模式等)2种平铺模式:Repeat、Clamp3种滤波模式:Point(最近邻滤波)、Trilinear(线性滤波)、Bilinear(线性滤波+多级渐远纹理技术)Unity中对纹理的压缩存储凹凸映射:高度映射、法线映射法线映射:模型空间/法线空间法线映射实现上条中不同空间下原创 2020-08-05 13:56:17 · 116 阅读 · 0 评论 -
Shader入门精要读书笔记5
Shader入门精要读书笔记5:第6章渐入佳境—光照光源(方向,辐射度):吸收、散射散射:折射/投射、反射高光反射-Specular:反射漫反射-Diffuse:折射、吸收、反射出射度-辐射度光照模型:BRDF、标准光照模型(亦可称为Phong光照模型/Blinn-Phong光照模型)标准光照模型(4部分)以下总结均基于此模型:emissive specular diffuse ambient环境光-ambient:全局常量自发光-emissive:材质自发光颜色漫反射-diffus原创 2020-07-31 14:57:31 · 110 阅读 · 0 评论 -
Shader入门精要读书笔记4
Shader入门精要读书笔记4:第5章Unity版本号和环境创建场景,Shader->材质->球体简单Shader中每一行代码的作用使用语义(例如SV_POSITION)作为输入输出SV_POSITION/SV_TARGET:顶点/片元着色器输出结构体的引入,并用于着色器间信息传递(顶点着色器插值后送给片元着色器)Properties声明属性和使用Unity内置文件的应用(结构体/函数/变量)Unity支持的语义列举Debug方法:假彩色图像/Graphics Debbug原创 2020-07-29 14:29:00 · 117 阅读 · 0 评论 -
Shader入门精要读书笔记3
Shader入门精要读书笔记3:第4章笛卡尔坐标系:标准正交基、左/右手坐标系点、矢量、矢量的运算(点积叉积)矩阵、矩阵的运算矩阵变换:线性变换(缩放、旋转)、仿射变换(合并了线性变换和平移变换)齐次坐标:缩放矩阵、旋转矩阵(zxy)、平移矩阵(依次)坐标空间:父空间-子空间模型空间/对象空间世界空间观察空间/相机空间裁剪空间(正交/透视)屏幕空间:进行标准齐次除法/透视除法法线变化Unity内置的变换矩阵Unity内置的摄像机和屏幕参数Unity Shader中矩阵和矢量的原创 2020-07-27 10:46:52 · 93 阅读 · 0 评论 -
Shader入门精要读书笔记2
Shader入门精要读书笔记2:第3章Unity Shader和材质Unity Shader的语言:ShaderLab.shader文件的结构Properties SubShader(Pass Fallback)的代码举例表面着色器 顶点/片元着色器 固定函数着色器上述三种着色器的工作方式和适用背景Unity Shader和传统Shader的区别和联系Unity Shader和CG/HLSL...原创 2020-07-23 13:34:22 · 91 阅读 · 0 评论 -
Shader入门精要读书笔记1
Shader入门精要读书笔记1:第1、2章开篇介绍了Shader的背景和作用,以及这本书的结构(共20章)流水线–>渲染流水线(应用阶段、几何阶段、光栅化阶段)应用阶段:CPU加载数据到显存–>设置渲染状态–>Draw CallGPU流水线:几何阶段+光栅化阶段几何着色器:逐图元着色片元着色器:逐片元着色(片元由三角形遍历后生成)OpenGL和DirectX屏幕坐标系不同逐片元操作/输出合并阶段(模板测试、深度测试、混合)HLSL(微软)GLSL、CG(跨平台)Dra原创 2020-07-21 13:36:13 · 146 阅读 · 0 评论 -
计算机图形学入门踩坑记录3
计算机图形学入门踩坑记录30.前言正在学习实现一个渲染器tinyrenderer,现记录如下, ssloy/tinyrenderer 链接: 目标github地址最近碰到一个很大的问题(代码编译不通过),花了2天时间才得以解决,就是第四节引入投影后。1.不明白的地方直接上图我使用的环境是win10+vs2019,现在是2020年7月题主:6年前提交代码至github,且带有makefile(猜测不是使用vs编译,而是使用make命令编译)2.解决过程1.编译时报错的内容有这几类:C44原创 2020-07-16 14:19:59 · 376 阅读 · 0 评论 -
计算机图形学入门踩坑记录2
计算机图形学入门踩坑记录20.前言正在学习实现一个渲染器tinyrenderer,现记录如下, ssloy/tinyrenderer 链接: 目标github地址上次看公式看了半天,最后整明白cross()函数计算的给定点对应三角形顶点的分量(一个0-1的比例);这次又碰见一个棘手的问题:第三节最后给出了一个课后题,用已有的贴图,贴在模型上。1.不明白的地方题主简要的介绍了几个概念:1.字母f代表face 一个面(三角形),后面跟着的数字代表序号2.依次为:顶点序号/纹理序号/?(第三个还没学原创 2020-07-15 10:59:13 · 253 阅读 · 3 评论 -
计算机图形学入门踩坑记录1
计算机图形学入门踩坑记录10.前言学习实现一个渲染器tinyrenderer,在看到第二节Lesson2的时候有一点没看懂,现记录如下, ssloy/tinyrenderer 链接: 目标github地址1.不明白的地方2.解析参考来自链接: 维基百科.意思就是当一个点(P)位于三角形中时,根据第一节图中的所示的推导,其中第一个公式对应的1-u-v对应λ1,u对应λ2,v对应λ3。又有λ1+λ2+λ3=1。(几何意义为点P与三角形的顶点所分割的3部分面积比例和为1)因此,根据2个方程:分原创 2020-07-10 10:16:52 · 259 阅读 · 0 评论