随笔分类 -  OpenGL

摘要:1、void glEnablei( enum target, uint index ); void glDisablei( enum target, uint index ); 参数:target表示GL_BLEND等功能。 index表示颜色缓冲附着点的index,0对应GL_COLOR_ATTA 阅读全文
posted @ 2020-08-15 11:01 茶飘香~ 阅读(334) 评论(0) 推荐(0)
摘要:普通Texture无法在一个pass中完成读和写,且无法操作一个给定位置的数据,所以只能使用ImageTexture,使用时遇到了两个问题: 1、快速清空 ImageTexture 使用的是一张普通的 texture 纹理,texture 被包装为ImageTexture,故可以直接将texture 阅读全文
posted @ 2020-03-07 21:55 茶飘香~ 阅读(1659) 评论(0) 推荐(0)
摘要:昨天我遇到一个问题,问题如下: 我使用了延迟渲染,我的渲染流程是:Pass1 --> CUDA并行计算 -->Pass2 CUDA并行计算中需要使用Pass1渲染生成的两张纹理,然而我在GPU端使用CUDA计算时发现纹理为空(数据全是0值),但是如果将两张纹理的数据传回CPU端,打印出来是有值的,且 阅读全文
posted @ 2020-01-06 20:11 茶飘香~ 阅读(1283) 评论(0) 推荐(0)
摘要:前天早上来到实验室,准备抓紧时间写写代码,毕竟第二天就是组会了。点了一下鼠标,发现显示屏无法唤醒,然后就准备强制关机再开机(我一般不关机,以前遇到过几次无法唤醒),低头发现主机不亮,然后按了开关也不亮意识到电脑坏了!!! 后来就是检修,显卡返厂了,装了一块备用的显卡 GTX1080-->GTX166 阅读全文
posted @ 2019-12-10 23:38 茶飘香~ 阅读(277) 评论(0) 推荐(0)
摘要:平常我们使用的Shader有顶点着色器、几何着色器、片段着色器,这几个都是为光栅化图形渲染服务的,OpenGL 4.3之后新出了一个Compute Shader,用于通用计算并行加速,现在对其进行介绍。 介绍Compute Shader之前需要先介绍一下ImageTexture: 普通的Textur 阅读全文
posted @ 2019-12-07 00:46 茶飘香~ 阅读(11024) 评论(0) 推荐(0)
摘要:1、在OpenGL中生成纹理texture optix中的纹理直接使用OpenGL纹理的id,不能跨越OpenGL纹理,所以我们先在OpenGL环境下生成一张纹理。 这个过程就很熟悉了: 这个本来很简单,但是我在这儿遇到了一个错误,将此生成的纹理放入Optix出现了错误: 原因是我之前在上面红色显示 阅读全文
posted @ 2019-12-01 23:36 茶飘香~ 阅读(856) 评论(0) 推荐(0)
摘要:转载,我看到的这篇博客也是转载别人的,我都不知道原始在哪儿^_^ glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); format和ty 阅读全文
posted @ 2019-11-06 16:56 茶飘香~ 阅读(1560) 评论(0) 推荐(1)
摘要:最近做课题的时候需要计算一个 view(就是一次渲染得到的帧) 下的重叠像素个数(两个物体或更多的物体重叠)。 最开始我的想法是渲染一个物体输出一张纹理,这样对比物体之间的纹理就知道重叠了。但是这样当物体很多的时候需要输出太多的纹理到CPU,太慢了,也很麻烦。 后来和同学讨论了一下,觉得是不是可以使 阅读全文
posted @ 2019-11-06 16:41 茶飘香~ 阅读(1832) 评论(0) 推荐(1)
摘要:我参考了 第0个示例 OptixHello 学习Optix的工程配置以及基本框架 的配置过程,该文对于 Optix 的框架介绍的很好,但是按照该文配置遇到了一些问题,我花费了一番功夫自己摸索终于配置好了环境,实现了用Optix计算然后在OpenGL上展示结果的一个简单的Demo。 我的配置环境为:W 阅读全文
posted @ 2019-10-25 14:44 茶飘香~ 阅读(3949) 评论(2) 推荐(0)
摘要:1、进入目录:C:\Program Files\NVIDIA Corporation\NVISMI 2、输入命令nvidia-smi 可以看到我的显卡驱动版本号为431.60 阅读全文
posted @ 2019-10-24 13:54 茶飘香~ 阅读(776) 评论(0) 推荐(0)
摘要:昨晚终于把点阴影(深度CubeMap)程序调通了,思想不难,基本就是在上节定向光阴影基础上稍作修改,但是CG程序不太方便Debug,需要输出中间效果图进行判断,耽搁了一会儿。 过程如下: 1、将深度渲染到CubeMap上 为了以后使用方便,在Texture文件中扩展功能,添加一个生成CubeMap的 阅读全文
posted @ 2019-10-23 15:50 茶飘香~ 阅读(1358) 评论(0) 推荐(0)
摘要:很早就想看阴影映射,一直拖到了现在,今天终于看了单方向的阴影映射,然后搭了个场景看了一下效果(每次搭场景感觉有点麻烦)。 阴影映射的大体过程: 思路: 1、渲染深度贴图 以光源的位置为相机位置进行一遍渲染,当然了得使用GBuffer(延迟着色)进行离屏渲染,这样可以将深度存入一张纹理。之后可以通过平 阅读全文
posted @ 2019-10-19 23:02 茶飘香~ 阅读(348) 评论(0) 推荐(0)
摘要:前篇学习了单个的光源,现在在一个场景中放置多个不同的光源,包括一个定向光源、4个点光源、一个聚光灯。 GLSL代码如下(片段着色器): 渲染代码如下: 效果图: 1、定向光+点光源 2、定向光+点光源+聚光灯(软影) 阅读全文
posted @ 2019-10-05 19:16 茶飘香~ 阅读(1581) 评论(0) 推荐(0)
摘要:1、平行光 给出光源的方向向量即可,没有位置(这里不作代码展示了,很简单)。 2、点光源 点光源包含衰减过程。需要给出光源的位置,衰减的三个系数。 片段着色器代码如下: 渲染代码如下: 效果图: 3、聚光灯 聚光灯除了衰减以外,加入了照射范围限制,光源有位置、照射方向、cut角。 片段着色器代码如下 阅读全文
posted @ 2019-10-04 16:25 茶飘香~ 阅读(278) 评论(0) 推荐(0)
摘要:光照贴图一般有漫反射和镜面高光贴图。光照贴图用在片段着色器中,对每个片元计算color时,对于phong光照模型,diffuse和specular材质颜色可以从对应的纹理中采样,这就是光照贴图。 片段着色器代码如下: 渲染代码如下(包含设置光照贴图): 效果图: 阅读全文
posted @ 2019-10-03 22:33 茶飘香~ 阅读(530) 评论(0) 推荐(0)
摘要:实例化渲染适用于使用同一个模型渲染多次的情景,比如草地,一堆岩石等。 1、先看一个渲染方形100次的例子: 其顶点着色器会有少许适应实例化渲染的变化 可以看到着色器中传入了100个偏移向量。顶点着色器中内置了一个变量gl_InstanceID,此变量表示当前绘制的实例编号(从0开始)。那么我们可以用 阅读全文
posted @ 2019-09-06 15:09 茶飘香~ 阅读(1224) 评论(0) 推荐(0)
摘要:一般我们只使用了顶点和片段着色器,这也是基本和必须的两个着色器,而几何着色器是一个可选的着色器,其位于顶点和片段着色器之间。 几何着色器接收来自顶点着色器的一个片元的一组顶点,然后可以对其进行变换,可以输出新的不同类型的片元,也可以增加顶点数,其功能非常强大。 一般写法如下: 可以看到首先定义了输入 阅读全文
posted @ 2019-09-04 15:29 茶飘香~ 阅读(2016) 评论(0) 推荐(0)
摘要:Uniform Buffer 是一个很有用的缓存,可以将大量的需要传递至多个着色器的矩阵、向量数据等存储在uniform buffer中。这是一个公共的缓存,所以当多个着色器需要传递相同的数据时,可以使用uniform buffer,减少代码量,应该也可以较少CUP传递至GPU的数据量。 大体思路是 阅读全文
posted @ 2019-09-02 16:28 茶飘香~ 阅读(3600) 评论(0) 推荐(0)
摘要:立方体贴图,也称CubeMap。其实就是一张包含六个面的纹理贴图,一般情况下是加载六张贴图构成cubemap。 加载代码如下: 使用cubemap实现天空盒 片段着色器中采样纹理 效果展示: 1、反射 - 盒子 2、反射 - nanosuit 3、折射 - nanosuit 阅读全文
posted @ 2019-08-29 19:23 茶飘香~ 阅读(579) 评论(0) 推荐(0)
摘要:帧缓冲,显卡渲染出的图像会保存在默认的帧缓冲之中,其包括的附件有颜色、深度、模板缓冲。 我们可以创建自己的帧缓冲。 我们需要为其附加一些附件(如,颜色、深度、模板缓冲)。 对于颜色,我们可能有时需要在渲染后做后期处理,那么就需要获取渲染后的像素值,这种情况下好的选择是使用颜色纹理作为附件。 而深度和 阅读全文
posted @ 2019-08-27 17:41 茶飘香~ 阅读(747) 评论(0) 推荐(0)