Games202高质量实时渲染_lecture2_Recap of CG Basics

在这里插入图片描述
在这里插入图片描述

1 渲染管线

总结一下渲染管线:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

虽然光栅化这套体系对直接光照可以处理的很好,但是任何一点全局的情况都处理不好,比如阴影,光线的多次弹射。
在这里插入图片描述
参数化问题是非常难的问题,也是学术界一直在做到。

2 OpenGL

OpenGL就是API;
在这里插入图片描述

以下为画油画的过程,用来类比OpenGL的过程。

1.放置物体
2.画架放好
3.画架放一个画布
4.在画布上画东西
5.换一张画布继续画
6.之前画过的画,可以继续用。

OpenGL就是做了这么一个步骤:
在这里插入图片描述

VBO-GPU中一块区域,用来存放物体的顶点,发现和纹理坐标,存一堆顶点的位置,有顺序和编号,对应的normal,存一些连接方式。

1第一步:放置物体:

在这里插入图片描述

2 第二步:设置一个画架

framebuffer就是OpenGL 中的画架。
在这里插入图片描述

3 第三步:使用画架,将画布搞到画架上

指定一个framebuffer可以一下子渲染多张图,坑可能是一张深度,一张是normal,等。
一个framebuffer可以画多张纹理。

一个特殊的目标是将一个frambufer直接渲染到屏幕,但是不推荐,这样话这一帧没有渲染完,下一帧就会开始渲染,导致画面撕裂,先把渲染的结果存储到纹理,或者缓冲区里,没有问题了然后再渲染到屏幕,这个就是双重缓冲,更复杂的是三重缓冲。

frambuffer就是画架,画布可以有很多张。
渲染一次,会得到很多东西,由fragment shder告诉你渲染到拿一张纹理上去。

纹理就是画布吗?
在这里插入图片描述

4 第四步:在画布上画画

要用shading。

顶点先做mvp,然后

在这里插入图片描述
集中精力在着色语言上。
在这里插入图片描述

5 总结

所有信息告诉GPU,
定义我要渲染什么物体/场景、然后定义这些物体/场景的MVP矩阵,相机在哪里,mvp是什么,
还要告诉gpu选什么画架frambuffer,frambuffer输出是几个纹理,是一个还是多个呢,都是谁呢?纹理告诉frambuffer。
告诉gpu怎么渲染,把我的vertex 和 fragment shader都告诉gpu,当所有的东西都在gpu中,才可以。

OpenGL是状态机模型,不同意,应该告诉他上面的这样。

还可以多次渲染,把以前的纹理当作这次的参考,一个场景为啥要渲染很多次呢?shadermap就是非常经典的多次渲染,用了两次,一次是看light能看到谁,第二次在camera看到的物体能不能被light看到。
第一次是得到的是light看到的最小深度纹理,在第二次中用它。

在这里插入图片描述
OpenGL支持optics,可以的,不能再shader中做。

纹理就是一张图,

3 GLSL

类c
主要是是为了gpu上编程,
在这里插入图片描述

1 shader 如何启动

program集合了你的所有的自定义shader,然后再做个连接,就是查一下顶点着色器和片段着色器对上对不上啊,各自都是对的在,中间能不能连上。很自然的步骤。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
完全可以封装成一个很好用的函数,openGL本身的东西没有必要学习。

2 vertex shader

顶点的变换,顶点的位置,顶点的发现,建立vbo的时候已经告诉gpu了。

在这里插入图片描述
顶点着色器要定义片段着色器中要插值用的量,用varying指定的在在fragment中肯定还有相对应的。
uniform就是全局变量,是从cpu直接扔到gpu中,顶点着色器可以访问,片段着色器中也可以访问。

3 片元着色器

用到了更多的全局变量,
sample2D就是二维的纹理,可以查某个位置的值,四通道RGBA,

在这里插入图片描述

对颜色进行2.2是进行γ矫正,
在这里插入图片描述

4 debug shader

gpu中无法在屏幕上显示
Nsight Graphics
RenderDoc
不知道是否可以调试web GL,
在这里插入图片描述
个人建议:
print it out!

shaw values as colors!
得到某种深度,在0-200,除以200.0,这样就变成了0-1.
然后传给GLgramcolor,把他当成颜色显示出来, 观察像素点的颜色值来显示,
gpu中只能复杂那一个像素对应的颜色。
在这里插入图片描述

openGL写错了shder基本是全黑,可以用上面的方法,看对应的数值是多少。

负数的话先加上某个偏移,然后再看…

4 渲染方程

用来描写光线传播的方式,
实时渲染都是以他为基础。
忘掉了很多概念,需要复习一下。
在这里插入图片描述在这里插入图片描述
环境光照:

cubemap,球体map,

在这里插入图片描述
八面体的表示--新的环境光的表示

环境光的难度:直接光照,每个点都要往四面八方去看,每个方向的贡献都要积分起来,一个像素,一个fragment都要这么做,就很复杂了。
这个是直接光照;
在这里插入图片描述
这个是间接光照,
全局光照=直接光照+间接光照。

实时光照,多一次间接光照就可以。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5 视频

https://www.bilibili.com/video/BV1YK4y1T7yY?p=2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值