自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

翻译 线性变换余弦算法( Linearly Transformed Cosines)

一、通过使用M矩阵对原始的光照分布进行线性变换1、线性变换矩阵M如上图所示,从左到右,对于一个原始的光照分布Do,可以通过将其与矩阵M相乘得到全新的光照分布D。同时要注意选择不同的Do会得到不同的结果,如下图所示: 由于是线性变换,分布D上的方向向量ω可以通过M的逆矩阵变换回Do上的方向向量ωo。 ...

2018-06-19 12:39:16 2532

原创 关于VCT(voxel cone trace——基于体素的锥形光线追踪)Renderer的代码解读

一、目标鉴于国内网络能够搜到关于SVO的文章较少,阅读国外Paper十分费心费力,我准备将最近阅读的VCTRenderer代码中所学到的东西记录下来,作为自己的知识储备。二、VCTRenderer的大体渲染流程三、阴影贴图的计算VCTRenderer中为了达到软阴影的效果,没有使用PCF,而是使用了EVSM——Exponential Variance Shadow Map,该算法结合了Expone...

2018-04-10 17:11:23 6912

原创 海面模拟以及渲染(计算着色器、FFT、Reflection Matrix)

一、海面网格的波形计算详见:OCEAN SIMULATION PART ONE: USING THE DISCRETE FOURIER TRANSFORM大体思路: 如上图公式所示,该公式等号左边的向量X表示的是顶点位置,t表示时间,等式右边的向量k可以理解为表示的是单位根向量,即可以认为等式右边是等式左边的离散傅里叶变换(详见:一小时学会快速傅里叶变换)后的形式,根据理论

2018-01-19 22:55:19 5889 3

原创 虚幻四引擎学习之C++编程(一)

最近因为ACM省赛以及参加笔试面试等原因,许久没有更新博客,由于实习公司的原因,最近开始看虚幻四引擎的官方文档,这篇博客是对官方文档中C++编程部分第一人称FPS部分的代码分析和总结。一、GameModeGameMode又称游戏模式(其实就是翻译过来),它存在的意义是制定游戏的规则,比如龟兔赛跑,其规则就是谁先到达终点谁就获胜,它仅存在于服务器上。在官方文档的第一人称FPS教程部分

2017-06-08 19:23:12 5292 2

翻译 镜面反射辐照模型——不完全的翻译

首先给出PBR的反射方程: 上节教程主要解决的是漫反射部分,使用了辐照贴图(irradiance map),而这次解决的是镜面反射部分。我们通过类比解决漫反射辐照的方式来解决镜面反射辐照问题,但我们要注意的是,在解决漫反射辐照问题的时候,我们仅仅需要的是入射光线Wi,但是在解决镜面反射辐照的时候,因为双向反射分布函数: 我们需要的输入变量由入射光Wi和出射(观察)方向Wo两者同时决定,我

2017-04-18 09:21:06 4415 4

翻译 漫反射辐照——并不是很完全的翻译

注:本文原文是learnopengl网站Diffuse irradiance一文,一直没人翻译,这两天我抽出时间阅读了这部分内容,无奈本人英文渣,完整的翻译实在拿不出,只能读懂大体含义,于是想先记录下来目前能读懂的内容以及一些心得。 原文地址:https://learnopengl.com/#!PBR/IBL/Diffuse-irradiance一、一些简单介绍这一节对应于原文的第一节,该节的大体意

2017-04-08 21:22:46 1285 2

原创 billboard公告板技术与perlin噪声的实现

一、billboard公告板技术1.简介在游戏中经常会遇到使用一张2D贴图来代替3D物体的情况,比如我们可以绘制一个2D的太阳贴图来代替3D的太阳模型,再比如使用2D的灌木、花草贴图来代替其复杂的3D模型,那么如何使2D贴图看起来和3D模型的效果一样呢?这里我们使用billboard公告板技术,使其平面始终面对摄象机就可以了。2.billboard变换矩阵推导对于,billboard的推导,网上有很

2017-04-04 09:21:59 1079

原创 将粒子发射器与Transformfeedback相结合

先前写了一个没有用到transformfeedback的粒子发射器,这次进行补全。使用transformfeedback的好处:可以实时的对粒子进行控制,比如检测粒子与物体的碰撞。更新后的粒子发射器类:#ifndef PARTICLE_GENERATOR_H#define PARTICLE_GENERATOR_H#include <vector>#include <GL/glew.h>#in

2017-03-26 19:02:43 506 3

原创 没有使用transformfeedback的粒子系统

注意:这是一个十分基础的粒子系统,没有billboard没有几何着色器没有光照没有噪声处理,算是粒子系统的一个小基础上周通过OpenGL编程指南用TransFormFeedback技术按照书上那不完全的代码补全了粒子碰撞效果,然后我本意是想做一个火球效果。。。。。结果我觉得我还是先一步步来做一个基础的粒子系统。粒子系统的主要成分就是一个粒子发射器类,我们写好该类后,可以通过调整参数实现各种不同的效果

2017-03-19 16:36:06 433

原创 关于研究了两天的TransformFeedback的一些东西

一、所谓的target到底是指什么?在使用一些绑定函数的时候,例如:glBindBuffer、glBindBufferBase,这些函数的第一个参数是一般称之为target,其往往是:GL_ARRAY_BUFFER、GL_TRANSFORM_FEEDBACK_BUFFER、GL_TEXTURE_BUFFER,这些东西,那么所谓的target到底是什么呢? 如果我们查询glew.h里面的内容的话,会

2017-03-12 19:42:38 1956 3

原创 一步步写水面渲染(三)

第九步:法线贴图为了使海面更加有真实感,我们还要为其添加法线贴图,使其更具质感。为了保证法线方向的正确性,我们需要引入切线空间,并对于每一个三角面片计算其切线空间中的tangent和bitangent 代码如下:void tangentandbitangent(GLint x){ int x1, x2, x3; if (x % 2 == 0)//我绘制图像的时候使用的是GL_TR

2017-03-05 13:28:33 2037

原创 一步步写水面渲染(二)

第六步:计算纹理坐标因为,先前没有思考完善,所以导致需要修改一些代码从而更加方便的存储顶点位置数据、顶点法线数据、顶点纹理坐标数据struct DATAS{ GLfloat vertex_data[3]; GLfloat normal_data[3]; GLfloat texcoord_data[2];}VBOdata[DATA_LENGTH];//先前,我是直接用两个数

2017-03-04 09:14:24 808

原创 一步步写水面渲染(一)

第一步:了解Gerstner波 上述即为Gerstner波的方程,下面我们来说一下这个方程当中各个变量的含义: 1、x:水面静止时,某个顶点的x轴坐标。 2、y:水面静止时,某个顶点的y轴坐标。 3、Qi:用于控制波浪平滑度的变量,当Qi为0的时候,波浪就是一个正弦函数的波形。当Qi为1/(wi*Ai)时,波峰的形状最尖,波底较为平滑,若Qi继续增大则波峰会变成环状,另外要注意的是,因为最后

2017-03-01 14:42:50 1594 4

转载 PBR——基于物理的实时渲染

简介PBR,或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。正因为基于物理的渲染目的便是为了使用一种更符合物理学规律的方式来模拟光线,因此这种渲染方式与我们原来的Phong或者Blinn-Phong光照算法相比总体上看起来要更真实一些。除了看起来更好些以外,由于

2017-02-18 12:41:00 6492 3

原创 一些3D小场景

一、立方体贴图以及模型加载#include<string>#include<algorithm>using namespace std;#define GLEW_STATIC#include<GL\glew.h>#include<GLFW\glfw3.h>#include<GL\Shader.h>#include<GL\Camera.h>#include<GL\Model.h>#inclu

2017-02-01 18:51:59 569

转载 OpenGL学习总结(八)

高级OpenGL总结(三)六、立方体贴图1、创建立方体贴图 a、立方体贴图和其他纹理一样,所以要创建一个立方体贴图,在进行任何纹理操作之前,需要生成一个纹理,激活相应纹理单元然后绑定到合适的纹理目标上。这次要绑定到 GL_TEXTURE_CUBE_MAP纹理类型:GLuint textureID;glGenTextures(1, &textureID);glBindTexture(GL_TEX

2017-01-29 17:59:50 802

转载 OpenGL学习总结(七)

高级OpenGL总结(三)五、帧缓冲渲染过程中,图形加速器一般都有一个预先分配好的内存区域来维护显示列表内容(译者:注意,不一定是主内存)。它由显示内存和脱屏内存组成。随着OpenGL的渲染而改变内容的那一部分图形内存区域叫做帧缓存(frame buffer)。在窗口系统里,OpenGL通过帧缓存与窗口通信。窗口系统为OpenGL提供了一组工具来为窗口选择帧缓存特性,而这组工具,通常是系统相关的。一

2017-01-29 12:08:10 791

转载 OpenGL学习总结(六)

高级OpenGL总结(一)一、深度测试OpenGL在进行投影矩阵变换之后,我们知道所有的三维点都会投影到同一个平面上,那么势必会有一个问题出现——在三维空间中的N个点会落到投影平面上的同一位置,那么OpenGL绘制图像的时候就往往会出现需要显示的顶点被不需要现实的顶点遮盖,为了解决这一问题,OpenGL使用了深度测试。OpenGL开启深度测试后,会开辟一个深度缓冲区,当要绘制一个顶点的时候,会将该顶

2017-01-29 10:05:47 1074

转载 OpenGL学习总结(五)

OpenGL模型加载——Assimp1、Assimp模型加载库Assimp全称为Open Asset Import Library,可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)。只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据。Assimp把不同的模型文件都转换为一个统一的数据结构,所有无论我们导入何种格式的模型文件,都可以用同一个方式去访问我

2017-01-18 16:58:34 2304

翻译 OpenGL学习总结(四)

OpenGL光照模型总结一、 冯氏光照 所谓的冯氏光照分为三大部分:环境光照、漫反射光照以及镜面反射光照。对于同一个物体来讲,当有多个光源发出光线照亮该物体时,都可以将其划分成上述三种情况分别进行计算,最后将三部分组合即为其中一个光源照射物体后得到的最终结果,再将每个光源的照射结果进行叠加即为复杂照射环境下的最终结果。 1、 环境光照: 这是冯氏光照中最简单的光照,只需要用环境光向量乘上物

2017-01-18 12:33:15 987

翻译 OpenGL学习总结(三)

构造摄像机/观察矩阵1、摄像机与观察空间 在总结二中曾经提到过,局部空间要经过模型矩阵、观察矩阵、投影矩阵这三个变换矩阵后才能到达裁剪空间,而模型矩阵和投影矩阵都已经介绍过了,只有观察矩阵没有被提及,因为当我们讨论观察空间(View Space)的时候,是在讨论假设某一点存在一个摄像机并以它的视角作为场景原点,从而要改变场景中的所有顶点坐标,所以观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向

2017-01-18 11:51:03 6151 1

翻译 OpenGL学习总结(二)

OpenGL的矩阵变换与坐标系统一、矩阵变换 在OpenGL的世界当中,我们可以用向量表示一个顶点的位置,那么当我们要改变顶点位置的时候,我们应该怎么去处理呢?答案是使用矩阵乘向量的方式进行改变,常见的改变一共有三种——缩放,平移和旋转,所以对应的矩阵也有三种,不过在介绍这些矩阵之前我们先要了解什么事齐次坐标。1、齐次坐标 简单的来讲,齐次坐标就是普通坐标(x,y,z)后面再多加w一个分量,变成

2017-01-17 18:04:07 884

Billboard与Perlin噪声的简单实现——Opengl3.3

使用OpenGl3.3简单实现了bilboard与perlin技术,希望能对需要的人有帮助

2017-12-03

一个效果非常屎的Gerstner wave

水面映射之类的高科技都没加

2017-03-05

Pascal 动态规划 背包九讲

背包问题九讲 v1.0 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化 附:USACO中的背包问题 前言 本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较为完善的NOIP难度的动态规划总结,名为《解动态规划题的基本思考方式》。现在你看到的是这个写作计划最先发布的一部分。 背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题,我也将它放在我的写作计划的第一部分。 读本文最重要的是思考。因为我的语言和写作方式向来不以易于理解为长,思路也偶有跳跃的地方,后面更有需要大量思考才能理解的比较抽象的内容。更重要的是:不大量思考,绝对不可能学好动态规划这一信息学奥赛中最精致的部分。 你现在看到的是本文的1.0正式版。我会长期维护这份文本,把大家的意见和建议融入其中,也会不断加入我在OI学习以及将来可能的ACM-ICPC的征程中得到的新的心得。但目前本文还没有一个固定的发布页面,想了解本文是否有更新版本发布,可以在OIBH论坛中以“背包问题九讲”为关键字搜索贴子,每次比较重大的版本更新都会在这里发贴公布。

2010-11-11

空空如也

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

TA关注的人

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