自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 go 语言时间处理报错 panic time missing Location in call to ...

在golang 使用“Asia/Shanghai” 时区转换时间格式,本机正常,其他机器报错panic time missing Location in call to ...这是由于缺少IANA TimeZone Database,一般在linux系统都自带了,但是在window系统中可能会缺失。解决方法:time.FixZone()

2022-11-23 15:36:15 101

原创 go语言map字典 and struct结构体 转 bsonM

【代码】go语言map字典 and struct结构体 转 bsonM。

2022-10-19 21:53:29 64

原创 go语言分页 gin框架分页

因为分页经常会用到,所以这里推荐将分页封装成一个结构体。go语言分页 gin框架分页

2022-10-19 21:48:32 44

原创 实时全局光照Screen Space Reflection (SSR)

它是在实时渲染中引入的一种全局光照的方法实行光线追踪但是不需要3D基本体。

2022-10-17 13:38:56 316

原创 基于LTC的微表面着色模型(Linearly Transformed Cosines)

LTC(Linearly Transformed Cosines),线性变换余弦,这个概念出自论文《Real-Time Polygonal-Light Shading with Linearly Transformed Cosines》。这篇论文解决的问题是:实时地实现的反射,并且能有基于物理的BRDF效果。

2022-10-16 15:38:23 237

原创 实时全局光照Screen Space Ambient Occlusion(SSDO)

的一个提高,相比SSAO的大胆假设(屏幕中的所有的点的间接光照是相同的),其实可以考虑的更准确一点。在RSM中讲过场景中的提供间接光照的是次级光源(被光照直接照亮的点都可以作为次级光源),次级光源为场景中的其他的点提供直接光照就是场景中的间接光照。在下面图中可以看出对比,SSAO可以在物体接触的地方产生一些变暗或者变亮的效果,但是并不能做出color blinding 的效果。SSDO利用的是渲染的直接光照,不是来自RSM而是来自相机。与SSAO相比较SSDO的实现原理与之相反。(原理与路径追踪相似)。

2022-10-11 22:03:43 33

原创 实时全局光照Screen Space Ambient Occlusion(SSAO)

全局光照的近似在屏幕空间上获取信息。Screen Space Ambient Occlusion(SSAO)屏幕空间环境光遮蔽,屏幕空间

2022-10-10 20:06:23 266

原创 实时全局光照RSM-Reflective Shadow Maps(RSM)

现实世界光处于线性空间,光照效果是可以叠加的,最终的光照结果 = 直接光照 + 间接光照,结果也被称为全局光照(Global illumination)。与之对比的是局部光照——仅考虑直接光照。那么自然在目前线性空间的渲染技术当中,同样符合光照结果 = 直接光照(direct light) + 间接光照(indirect light)。直接光:光源直接照射到物体上,后被反射进眼睛,来自被指定的光源。间接光:光经过多次弹射(至少大于等于两次)后进入眼睛,来自被着色位置正半球的所有可能方向。

2022-10-08 19:44:01 285

原创 球谐函数(环境光照)

因为环境光表示的是三维空间中各个方向上的光线,刚好可以看做是定义在球面上的函数,有了这一层“关系”,我们就可以利用球谐函数,将环境光参数化,既方便存储也方便使用。球谐函数(spherical harmonics)本身是来自物理学的一个概念,是对定义在球面上的函数的分解,类似于傅里叶变换是对一维函数的分解一样。傅里叶变换将一维函数分解为不同频率的正弦函数的累加,而球谐函数将球面上的函数分解为一组(无穷多个)标准正交的基底的累加,适用于直接分析球面上一些函数的性质。其中的每一个基函数都是由。

2022-10-03 15:01:48 223

原创 SDF(signed distance field)

在3d中光线追踪对于性能的消耗过大,所以sdf常常被用来作为物体的隐式表达,配合ray marching达到接近光线追踪的效果,也有比如deepSDF这种对于模型的隐式表达方面的应用。在2d中,sdf常常被用来表示字体,原神的面部渲染中阴影部分贴图也是基于sdf生成的。,来解决光线和SDF的求交问题,这背后有一个key idea:某一点SDF的值等价于其附近的安全距离,从一点出发在每个step沿着ray的方向移动SDF(p)的距离,此处的p指的是当前step时的那个点。一般来说,无论2d或者3d资产都有。

2022-10-03 14:25:50 423

原创 环境光照IBL(Image-Based Lighting)

首先不考虑遮挡把V项干掉;用近似公式将L和BRDF拆开;通过对Cube Map生成Mipmap采样差值取LL;将BRDF预计算为一张二维纹理,运行时采样成反射率可得到。

2022-09-28 20:07:15 133

原创 软阴影(PCF、PCSS)

软阴影与硬阴影的区别如下:上面为硬阴影,下面为软阴影。PCSS ,PCF

2022-09-20 18:05:09 522

原创 实时渲染方程

2)对于面光源是均匀的或者brdf是diffuse的时候,使用该方程近似比较准确。1)对于一个点光源或者一个方向光源的时候,使用该方程近似比较准确。(什么时候使用这个方程比较准确?2. g(x)在积分域内的变化不大。1. g(x)的实际的积分域较小。

2022-09-20 16:09:55 55

原创 阴影(shadow mapping)(硬阴影)

得到的这个图我们不要做着色,把这些点对应的位置的深度记下来。相当于我只需要它的深度图。找到对应的点投影回光源,在光源中的深度图上应当出现在哪个位置上。在深度图上对于这个点记录有一个深度,同样可以计算从摄像机看这个点,这个点到光源的深度,这两个深度肯定是一致的,那说明这个点一定是可以被光源所看到的。如果相机所记录的点的深度投影到光源,与光源所记录的深度不一致,则说明该点被遮挡,即眼睛看不到。

2022-09-20 15:40:19 132

原创 GAMES101-ASSIGNMENT8(作业8)

你应该在连续的两个结点之间创建一个弹簧,设置弹簧两端的结点索引和弹簧系数 k,请检查构造函数的签名以确定传入的参数。不用再考虑弹簧力,而是用解约束的方法来更新质点位置:只要简单的移动每个质点的位置使得弹簧的长度保持原长。在application.cpp 文件的最上方,你应该可以看到欧拉绳子和 Verlet 绳子的定义。遍历所有的弹簧,对弹簧两端的质点施加正确的弹簧力。通过创建一系列的质点和弹簧,你就可以创建一个像弹簧一样运动的物体。胡克定律表示弹簧连接的两个质点之间的力和他们之间的距离成比例。

2022-09-18 17:01:42 143

原创 GAMES101 路径追踪

我们求解最后着色点的 radiance,期望获得精确的计算结果,同时又希望递归可以终止,由此我们定义一个概率 P 我们去继续往下打出光线做追踪,将其返回结果除以P,(1-P)的概率不继续追踪得到的结果是0,而这是一个简单的离散随机变量,可以求得结果的期望值不变,即无偏估计。至此,我们获得一个正确的Path Tracing的方法,但是这不是一个非常高效的算法,我们具体看下,引入采样率 SPP 的概念(samples per pixel),当spp较小时,会得到noisy的结果。

2022-09-17 13:09:39 99

原创 GAMES101-ASSIGNMENT7(作业7)

• IntersectP(const Ray& ray, const Vector3f& invDir,const std::array& dirIsNeg) in the Bounds3.hpp: 这个函数的2作用是判断包围盒 BoundingBox 与光线是否相交,请直接将上次实验中实现的内容粘贴在此处,并且注意检查 t_enter = t_exit 的时候的判断是否正确。在本次实验中,我们将在上一次实验的基础上实现完整的 Path Tracing 算法。

2022-09-14 15:48:41 123

原创 角和立体角(Angles and Solid Angles)

角和立体角(Angles and Solid Angles)单位立体角,通过角的定义,推广到立体角的定义:空间中球的半径为r,球心出发形成一个锥,锥与球面相交形成一块区域A,立体角记作。使用弧度定义角的大小,从圆心出发射出两条线会形成一个角。,两条射线与圆的表面相交形成一条直线。

2022-09-06 16:22:48 85

原创 曲面细分(loop曲面细分,catmull曲面细分)(计算机图形学学习笔记)

曲面细分,目标:尽量减少三角形的数量并保留整体的形状。作用可类似于mipmap,对场景中不同距离的物体使用不同数量的三角形建模,来减少计算机的运算量。再次分割可以发现奇异点还是4个,可以发现规律,每次分割奇异点增多的个数就是非四边形的个数,所以当非不存在非四边形的时候,不论分割多少次奇异点都不会增加。Loop细分只能解决三角形网格的细分问题,对于一般的情况可以采用Catmull-Clark细分。每次都坍缩分数最小的边,然后更新被影响的边的二次误差。二次误差:新的点应该与它相关联的面的距离的平方和最小。

2022-09-03 16:05:43 345 2

原创 Linux 复制文件夹或文件到另一台电脑上

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。Linux scp 命令用于 Linux 之间复制文件和目录。将从本地复制到远程的命令的后2个参数调换顺序即可。是不加密的,scp 是 rcp 的加强版。

2022-09-03 11:54:00 905

原创 纹理映射.

纹理映射

2022-09-02 21:33:43 36

原创 python项目打包报错记录

使用pyinstaller打包项目的时候报以下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa3 in position 51: invalid start byte....

2022-09-02 15:38:59 179

原创 重心坐标系(Barycentric coordinate system)详解

给定一个三角形的三个顶点,,,则三角形所在平面内的任意一点可表示为点 A,B,C 的坐标的线性组合其中, α+β+γ=1。若将 α,β,γ 看作点 A,B,C 的质量,则点 P 即为 △ABC 的重心,这样构建的坐标系因而得名重心坐标系。此时称α,β,γ 为点 P 在重心坐标系下的坐标,简称重心坐标。其中三角形的重心的重心坐标系为(1/3,1/3,1/3).一种简化的计算方法:分母为两个大三角形的面积,分子为两个小三角形的面积点的重心坐标为(α,β,γ)= (α,β,1-α-β)...

2022-08-26 13:09:00 178

原创 Centos Linux 安装配置FTP

Centos Linux配置ftp,查询是否存在FTP和VSFTPD通过yum安装ftp和vsftpd服务只安装master虚拟机的ftp和vsftpd(master和windows通过ftp协议传输文件,master和slave之间用scp命令传输文件)查看配置文件修改配置文件

2022-08-21 14:45:45 176

原创 Centos Linux 的JAVA安装配置

查询Centos自带的open-jdk及其他java有关的包卸载这些软件包卸载完后看是否能查询到java版本,查不到版本提示即为卸载干净。

2022-08-21 14:40:35 176

原创 Centos Linux系统配置SSH免密登录

将authorized_keys传输到其他的服务器对应的.ssh文件夹下,将对应的id_rsa.pub用同样方式写入,最后保证每台机器都有其余服务器的公钥。第四步操作后会在你当前用户的home文件夹下生成一个隐藏文件夹.ssh。将公钥写入authorized_keys。重启ssh后看是否能免密登录其他服务器。修改ssh配置文件(启用22端口)查询本机是否有安装ssh包。开放防火墙22端口为公开。

2022-08-21 14:34:17 135

原创 Hadoop大数据集群搭建​ 详细教程

etc /vsftpd/ftpusers文件专门用于定义不允许访问FTP服务器的用户列表(注意:如果 userlist_enable=YES,userlist_deny=NO,此时如果在vsftpd.user_list和ftpusers中都有某个 用户时,那么这个用户是不能够访问FTP的,即ftpusers的优先级要高)。当设置了该配置项后,用户登陆服务器后,系统就会到/etc/vsftpd/userconf目录下,读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。

2022-08-21 14:29:42 305

原创 Geoserver配置地图服务(根据具体项目写的,自行参考)

geoserver保姆级教学,在bin目录下有个startup.bat的批处理文件,运行此文件开启地图服务命令窗口有此消息则表示端口启动成功。

2022-08-16 12:25:03 122

原创 GAMES101-ASSIGNMENT6(作业6)

• IntersectP(const Ray& ray, const Vector3f& invDir,const std::array& dirIsNeg) in the Bounds3.hpp: 这个函数的作用是判断包围盒 BoundingBox 与光线是否相交,你需要按照课程介绍的算法实现求交过程。• Triangle::getIntersection in Triangle.hpp: 将你的光线-三角形相交函数粘贴到此处,并且按照新框架更新相应相交信息的格式。......

2022-08-13 19:51:23 77

原创 GAMES101-ASSIGNMENT5(作业5)

Möller–Trumbore 算法,像素光线生成,GAMES101-ASSIGNMENT5(作业5)

2022-08-03 20:00:38 94

原创 BRDF详解(包括:irradiance,radiance,intensity,立体角)

BRDF是双向反射分布函数(BidirectionalReflectanceDistributionFunction,BRDF)用来定义给定入射方向上的辐射照度(irradiance),如何影响给定出射方向上的辐射率(radiance)。辐射度量学基本概念

2022-08-02 15:44:21 1074

原创 GAMES101-ASSIGNMENT4(作业4)

对于每个需要计算的t,将调用另一个函数recursive_bezier,然后该函数将返回在Bézier曲线上t处的点。程序将等待你在窗口中选择4个控制点,然后它将根据你选择的控制点来自动绘制Bézier曲线。在本次作业中,你需要实现deCasteljau算法来绘制由4个控制点表示的Bézier曲线(当你正确实现该算法时,你可以支持绘制由更多点来控制的Bézier曲线)。使用[0,1]中的多个不同的t来执行上述算法,你就能得到相应的Bézier曲线。...

2022-08-01 15:01:44 504

原创 GAMES101-ASSIGNMENT3(作业3)

1.我们引入了一个第三方.obj文件加载库来读取更加复杂的模型文件,这部分库文件在OBJ_Loader.hfile.你无需详细理解它的工作原理,只需知道这个库将会传递给我们一个被命名被TriangleList的Vector,其中每个三角形都有对应的点法向量与纹理坐标。在实现Blinn-Phong的基础上,将纹理颜色视为公式中的kd,实现TextureShadingFragmentShader.在此处实现与作业2类似的插值算法,实现法向量、颜色、纹理颜色的插值。...............

2022-07-29 13:54:48 129

原创 Blinn-Phong光照模型详解

光照模型,又称为反射模型或者phong修正模型,是由JimBlinn于1977年在文章中对传统phong光照模型基础上进行修改提出的。,但由于实现起来简单方便,并且计算速度和得到的效果都还不错,因此在早期被广泛的使用。它将进入摄像机的光线分为三个部分,每个部分使用一种方法来计算它的贡献度,这三个部分分别是、和。在计算之前,我们先定义一些基本的向量,因为只表示方向,默认它们都为单位向量。vnlL下面首先先介绍一下环境光、漫反射和高光反射的定义。.........

2022-07-28 18:27:40 1085

原创 MongoDB Sum 当字段是string字符串类型(go语言)

MongoDB Sum 当字段是string字符串类型

2022-07-25 10:54:44 304

原创 GAMES101-ASSIGNMENT2(作业2)

函数中,如果不在,则扫描下一个,如果在,则以三角形三点做插值得到这个中心点的z值,进一步判断,这个z值是否比深度缓存中对应位置的值要小,不小则不处理,小则替换深度缓存中的值为当前值。随后设置这个单元的颜色值。给定一个三角形,我们先要扫描出这个三角占据了哪些格子(像素单元),即定义boundingbox,取得这个三角形的x和y轴上的边界值,使得这个boundingbox尽可能的小,但又必须包裹住这个三角形。若p点在三角形内部,三角形边的向量与边的起点与p点组成的向量的叉积与上一步结果正负相同。......

2022-07-24 13:25:18 78

原创 GAMES101-ASSIGNMENT1(作业1)

games101第一章作业答案参考,共勉!

2022-07-21 21:31:58 34

原创 mongodb添加管理员用户

mongodb添加用户权限

2022-07-11 14:24:03 686

原创 python 汉字转拼音

python 汉字转拼音

2022-07-04 20:05:16 86

原创 go语言——切片去重、判断元素是否在切片中

go语言——切片去重、判断元素是否在切片中

2022-07-04 19:42:36 349

glfw-3.3.8.bin.WIN32

glfw-3.3.8.bin.WIN32 opengl的glfw库

2022-10-07

mongodb-linux-5.0.8

mongodb-linux-5.0.8,搭建分布式mongodb集群可以使用,也可以单独部署

2022-09-03

java_8,包含jre8.0和jdk8.0

java_8,包含jre8.0和jdk8.0.直接解压后配置环境变量即可运行

2022-09-02

mysql5.6压缩版压缩包

mysql5.6压缩版压缩包,解压后修改配置文件,配置环境变量就能直接运行

2022-08-30

linux系统glibc-2.29

linux系统libc库glibc-2.29,glibc,glibc-2.29

2022-08-30

VirtualBox-6.1.4

VirtualBox-6.1.4,虚拟机,games101作业虚拟机

2022-08-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除