摘要:
一、三维空间多段线几何 1 应用背景 opengl常用glLineWidth命令设置线宽,此线宽在透视投影中不会随着相机远近变化而缩放。项目中高版本glLineWidth命令失效,需要考虑如何快速、方便、宽度不变的多段线几何。方案a:纯shader绘制曲线,绘制到一个二维平面上,然后将平面旋转 阅读全文
摘要:
一、基础概念 1、SSAO:通过将褶皱、孔洞和非常靠近墙面变暗的方法,近似模拟间接光照。SSAO称为屏幕空间环境光遮蔽 ,使用屏幕空间场景的深度而不是真实的几何体数据来确定遮蔽量,速度快效果好。 2、实现原理:根据物体表面法线方向生成一个半球随机深度采样,主要看物体周围深度值大小,通过这个值来确定是 阅读全文
摘要:
osg使用整理(11):延迟渲染 一、基础概念 前向渲染流程:顶点着色器->图元装配成点线三角形->几何着色器->裁剪剔除->光栅化(片元着色器)->透明度测试、深度测试。 延迟渲染流程:顶点着色器->图元装配成点线三角形->几何着色器->裁剪剔除->光栅化输出G-Buffer,存储每个像素的属性信 阅读全文
摘要:
1. Shadow Mapping原理 思路很简单,将相机放到光源处,观察到的物体部分就是光照部分,没观察到的就是阴影,它被自身或其他物体遮挡住了。我们知道可以通过深度缓冲来保存面片到相机间的相对距离关系,离相机最近的物体会遮挡其他相同位置的物体面片,于是我们可以首先将相机放在光源处,这样得到的深度 阅读全文
摘要:
实用的空间几何方法 设点表示为 P (x,y,z),直线表示为过点P (x,y,z) 和方向direction (x,y,z),平面表示为过点P (x,y,z) 和法线方向norm (x,y,z)。 代数符号 * 表示向量点积, \(\cdot\) 表示向量叉积,||表示向量模长,norma 阅读全文
摘要:
1.1 单光源直接光照 void main() { //创建小球几何 osg::ref_ptr<osg::ShapeDrawable> sphere =new osg::ShapeDrawable; sphere->setShape(new osg::Sphere(osg::Vec3(0,0,0), 阅读全文
摘要:
基于物理的渲染(2):渲染方程 \[L_o(p,ω_o)=∫_Ωf_r(p,ω_i,ω_o)L_i(p,ω_i)n⋅ω_idω_i \] 其中\(L_o\)为P点的出射辐射率,\(f_r\)是P点入射方向到出射方向光的反射比,也叫双向反射分布函数(BRDF),\(L_i\)是P点入射光辐射率。渲染方 阅读全文
摘要:
基于物理的渲染(1):基本概念 1 背景 基于物理的渲染即Physically Based Rendering (PBR) ,也被称为PBS,指一定程度上满足物理规律的渲染工作流,比Phong模型相比渲染的效果更加真实。它在由Disney在SIGGRAPH 2012 会议上提出的一种BRDF模型之后 阅读全文
摘要:
osg 使用整理 (9):文本渲染 1 FreeType文本渲染 FreeType用于加载TrueType字体并渲染到位图的库。TrueType字体通过数学公式表示的曲线来描述字体轮廓。类似于矢量图像,这些光栅化后的字体图像可以根据需要的字体高度来生成。FreeType所做的事就是加载TrueT 阅读全文
摘要:
osg 使用整理 (8):基础光照和法线贴图 1 冯氏光照模型(Phong Lighting Model) 冯氏光照模型只考虑直接光照,将进入摄像机的光分为4个部分: (a)自发光表示当给定一个方向时,一个表面本身会向该方向发射多少辐射量 (b)镜面高光表示物体表面镜面反射的辐射量,模拟 阅读全文