自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自动微分原理AD

在学习可微渲染的过程中涉及到了自动微分原理,所以写一篇来总结一下学习的内容。

2024-02-27 18:51:04 257

原创 (自用)learnOpenGL学习总结-高级光照-blinn-phong and Gamma矫正

我们计算完场景的颜色之后就要显示出来,但是是通过电脑屏幕来显示。而电脑屏幕有一个特性,是通过输入的电压大小来产生亮度变化的。但是,两倍的电压不会产生两倍的亮度。而是2.2倍的指数变化。(crt设备)。因为人眼看到颜色的亮度更倾向于顶部的灰阶,监视器使用的也是一种指数关系(电压的2.2次幂),所以物理亮度通过监视器能够被映射到顶部的非线性亮度;因此看起来效果不错(译注:CRT亮度是是电压的2.2次幂而人眼相当于2次幂,因此CRT这个缺陷正好能满足人的需要)。

2024-02-21 16:24:10 824

原创 (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿

光栅器会将一个图元的所有顶点作为输入,并将它转换为一系列的片段。顶点坐标理论上可以取任意值,但片段不行,因为它们受限于你窗口的分辨率。顶点坐标与片段之间几乎永远也不会有一对一的映射,所以光栅器必须以某种方式来决定每个顶点最终所在的片段/屏幕坐标。每个像素的中心包含有一个采样点(Sample Point),它会被用来决定这个三角形是否遮盖了某个像素。图中红色的采样点被三角形所遮盖,在每一个遮住的像素处都会生成一个片段。虽然三角形边缘的一些部分也遮住了某些屏幕像素,但是这些像素的采样点并没有被三角形。

2024-01-30 16:36:47 354

原创 (自用)learnOpenGL学习总结-高级OpenGL-几何着色器

在顶点着色器和片段着色器中间还有一个几何着色器。几何着色器的输入是一个图元的一组顶点,在几何着色器中进行任意变换之后再给片段着色器,可以变成完全不一样的图元、可以生成更多的顶点。这是一个几何着色器的例子。我们不仅用这一帧的着色器输出,我们还会使用上一帧的着色器变量来进行更多变化。

2024-01-30 16:15:24 1291

原创 (自用)learnOpenGL-高级OpenGL-高级数据、高级glsl

这一节中,我们将讨论一些更有意思的缓冲函数,以及我们该如何使用纹理对象来储存大量的数据(纹理的部分还没有完成)。先来回顾一下之前有关的缓冲内存,OpenGL中的缓冲只是一个管理特定内存块的对象,没有其它更多的功能了。在我们将它绑定到一个缓冲目标(Buffer Target)时,我们才赋予了其意义。当我们绑定一个缓冲到GL_ARRAY_BUFFER时,它就是一个顶点数组缓冲,但我们也可以很容易地将其绑定到GL_ELEMENT_ARRAY_BUFFER。

2024-01-30 13:38:27 1271

原创 (自用)learnOpenGL学习总结-高级OpenGL-立方体贴图

ok终于来到了立方体贴图了,在这里面我们可以加入好看的天空包围盒,这样的画我们的背景就不再是黑色的了!首先,立方体贴图和前面的sampler2D贴图一样,不过是6个2D组成的立方体而已。那么为什么要把6个组合在一起呢?立方体贴图可以通过一个方向向量来进行索引(或者说采样)。什么意思?我们类比一下,之前在一个2D面上我们通过uv纹理坐标来找到对应的纹理值对吧。这里也一样,不过是通过一个方向向量来获得。

2024-01-27 20:03:59 1054

原创 (自用)learnOpenGL学习总结-高级OpenGL-帧缓冲Framebuffers

我们在之前使用了很多缓冲了:颜色缓冲、深度缓冲、模板缓冲。这些缓冲结合起来叫做帧缓冲,其实也能从名字理解,每一帧屏幕都需要不断更新画面,对应的缓冲也需要更新。不过上面这些都是在默认的缓冲里面做的,现在我们可以自定义帧缓冲方式。

2024-01-27 17:10:04 1397

原创 (自用)learnOpenGL-高级OpenGL-面剔除Face Culling

一个立方体有6个面,但是我们最多只能看大3个面,所以如果我们可以丢弃那几个面,就可以加速我们的程序了。但是问题也来了,我们如何确定哪些面camera能够看到,哪些不能看到。我们现在规定:我们只画面向用户的面!什么意思?一个面他都有两面,一面面向用户,一面背对。我们只画面向用户的。或者说,我们现在的问题变成了如何规定正向面和背向面。在opengl中有个很聪明的技巧,就是分析顶点数据的。我们在定义一组三角形顶点的时候,肯定是要么顺时针表示,要么逆时针表示。

2024-01-26 17:01:16 228 1

原创 (自用)learnOpenGL学习总结-高级OpenGL-混合

其实就是透明度的意思,在这之前一个图片png格式会有4个通道,最后一个通道就是透明度,他的颜色是由自己的颜色和后面的颜色一起确定的,一般来说 设置为1(完全由自己颜色决定),0.25的意思是自己决定25%。

2024-01-26 16:32:28 1049 1

原创 (自用)learnOpenGL学习总结-高级OpenGL-模板测试

可以想象一个场景,在之前的模板缓冲中,有箱子的地方都为1,其他都是0.然后现在画一个大一点的箱子上去。有1的地方就不画了,只在不为1的地方画,也就是边框之外的地方。思路很简单,这个过程将每个物体的片段的模板缓冲设置为1,当我们想要绘制边框的时候,我们主要绘制放大版本的物体中模板测试通过的部分,也就是物体的边框的位置。最后一个gl_replace,表示当深度和模板测试都通过的时候,那么我们希望将储存的模板值设置为参考值,参考值能够通过glStencilFunc来设置,我们之后会设置为1。

2024-01-25 18:13:02 1126

原创 (自用)learnOpenGL-高级OpenGL-深度测试

这一章提到了之前的深度函数,首先要开启深度测试,然后要在loop中及时清除深度通过开启深度测试,画面就会正常显示点与点的位置信息,里屏幕近的物体会覆盖远的物体。也就是z-buffer,用来确定一个片段是否在其他片段后方的。当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值。如果深度测试失败了,片段将会被丢弃。

2024-01-25 15:54:33 424

原创 (自用)learnOpenGL学习总结-复习至模型加载

依次总结一下到目前为止学到的东西。

2024-01-25 14:08:58 412

原创 (自用)learnOpenGL学习总结-模型加载-mesh and model

这是一个可以可以把obj文件传入我们系统的库。

2024-01-23 17:00:22 468 1

原创 (自用)learnOpenGL学习总结-光照-Multiple lights

render pipeline

2024-01-19 14:37:06 436 1

原创 (自用)learnOpenGL学习总结-光照-Light casters

在之前的basic lighting中,vertexShader中对于FragPos我写错了,不是简单的mat3(modelMat)* aPos,而是这样,这是因为,对于坐标变换来说,一定要在四元坐标中来变换不然就会错!所以,先变换再裁剪。其实在前面的课程中已经出现了光,但是在那个时候我们只定义了lightColor 和 lightPos,不过,这既不是点光源又不是平行光,在这一节会具体写清楚光该如何实现已经封装成类。

2024-01-18 22:15:43 405

原创 (自用)learnOpenGL学习总结-光照-Materials and Lighting maps

MaterialsLighting maps

2024-01-17 20:10:26 379

原创 (自用)learnOpenGL学习总结-光照-Color And Basic Lighting

从光照开始,我都会把每一次的学习内容都记录下来,不然的话,太久了真的会容易忘记的>_

2024-01-17 10:27:48 418

原创 (自用)learnOpenGL配置

包含目录 D:\Learnopengl\libraries\include。链接器 输入 附加依赖库 opengl32.lib glfw3.lib。库目录 D:\Learnopengl\libraries\libs。重建一个新的项目之后,把之前的cpp h等文件复制之后。c++ 常规中 附加包含目录 中导入 glm库。

2024-01-17 09:46:46 451

原创 (自用)learnOpenGL(入门)基础总结

参考的资源有:learnOpenGL,b站傅老师,csdn其他有关文章。本文用于记录总结在学习OpenGL入门部分的思考。

2024-01-15 21:33:45 632 1

原创 (自用)贪心算法

如果k还有剩余,那就再排一次,把最小的那个数反转,(这里应该只需要排一次)10.根据身高重建队列 (----难-----) 这里出现了vector的插入操作和sort的自定义操作。11.用最少的弓箭射爆气球 很妙,这里理解的难点是要不断更新重叠部分的右边界,以便于下一个气球来判断是否还可以一起射爆。7.加油站 很有趣的一题,把消耗和补充统合成油箱的剩余量,从头开始遍历,一旦残余量为0,那么从i+1开始重新计算。2.摆动序列 (---------不理解----------)

2023-12-26 21:50:15 376 1

原创 (自用)fds 回溯算法

7.分割回文串 index作为上一次的切割点,横向是不断把切割点往后移,如果这一段是回文那就放入path并接着切割,如果不是就把切割点后移。6.组合总和2 回溯模板,但是这里不同的是可选择数出现重复,首先排序,然后在每一层的也就是for中需要判断选的数是否已经选过。10.子集2 和之前的组合2一样,不能出现重复,那么就先排序,然后在每一层中判断i是否和i-1一样,一样就跳过。14.n皇后 确实难,但是也是回溯模板 (-------需要再多写几遍------)

2023-12-25 14:51:09 413

原创 (自用)fds 二叉树

3.二叉树的层序遍历(采用队列)(这里有很多题型,大致归纳一下)这里加入队列的基本使用。21.二叉树的最近公共祖先(----------未解决---------)2.二叉树的迭代方法(采用懒猫老师),方法二,(随想录写法)深搜写法。8.完全二叉树节点个数 (层序)(递归,返回1+左节点数+右节点数)4.翻转二叉树 有深搜(前序)的迭代和递归,有广搜的(层序)6.最大深度(层序)(递归(返回左右子树深度max+1))7.最小深度(层序)(递归,这里需要处理空子树)26.转换成累加树 (反的中序遍历)递归。

2023-12-19 21:16:50 373

原创 (自用)fds 堆栈与队列

这样的一个6x6的迷宫。其中最重要的是两个结构体,一个是用来存下一步方向的direction。另外一个是用来存每一步的状态的,其中不仅需要有当前的位置,还需要有下一步的放下,也就是box。其他具体实现细节可看b站up懒猫老师。1.迷宫问题(dfs非递归)深度优先搜索算法。3.代码随想录中 堆栈力扣题。

2023-12-07 15:44:56 369

原创 (自用)fds 链表

之后调整学习方式,选取感兴趣的题目以及练习内容进行学习具体数据结构有关知识点。zju mooc的三道链表题。b站up懒猫老师的约瑟夫环。代码随想录中的链表题。3.两两交换链表节点。

2023-12-05 16:54:44 401

原创 (自用)zju fds 第二次课

不知道为什么在合并上面过不去,大失败。但是基本流程摸清楚了。第一题 一元多项式的和与乘积。

2023-11-30 15:51:47 448 1

原创 复现 ray tracing in one weekend

这篇帖子用来记录自己在复现光线追踪中遇到的问题以及思考。

2023-11-28 18:44:18 426

原创 (自用)zju fds 第一次课

这里我的思路是,用start和end来不断取每次sum的头尾。第二题 在前面的基础上输入最大子列和的起始点和终点。采用在线判断,O(n)复杂度。

2023-11-28 16:17:45 401

空空如也

空空如也

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

TA关注的人

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