环境光吸收式一种用于产生真实软阴影的技术。常规的阴影实现,是采用发射一条阴影测试光线,测试光线与灯是否有遮挡。而环境光吸收采用向半球面随机发射光线,利用光线与环境的交点个数来模拟阴影的深浅。

其实现的原理如下:

//法线空间optix::Onb onb(ffnormal);unsigned int seed = rot_seed( rnd_seeds[ launch_index ], frame );float       result           = 0.0f;const float inv_sqrt_samples = 1.0f / float(sqrt_occlusion_samples);//发射sqrt_occulsion_sample*sqrt_occulsion_sample条测试光线for( int i=0; i<sqrt_occlusion_samples; ++i ) {for( int j=0; j<sqrt_occlusion_samples; ++j ) {PerRayData_occlusion prd_occ;prd_occ.occlusion = 0.0f;// Stratify samples via simple jitterringfloat u1 = (float(i) + rnd( seed ) )*inv_sqrt_samples;float u2 = (float(j) + rnd( seed ) )*inv_sqrt_samples;//计算发射方向float3 dir;optix::cosine_sample_hemisphere( u1, u2, dir );onb.inverse_transform( dir );optix::Ray occlusion_ray = optix::make_Ray( phit, dir, 2, scene_epsilon,occlusion_distance );rtTrace( top_object, occlusion_ray, prd_occ );//累加结果result += 1.0f-prd_occ.occlusion;}}result /= (float)(sqrt_occlusion_samples*sqrt_occlusion_samples);

利用得到的result,来衰减我们的渲染结果即可。

转载于:https://my.oschina.net/superpdm/blog/286471

环境光吸收(也叫环境光遮蔽,Ambient Occlusion)相关推荐

  1. GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)

    本文摘自https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章在讲大家很熟知的环境光遮蔽(Ambient Occlusion , AO). 文中的描述是,介绍了 ...

  2. 问题七十一:环境光遮蔽(Ambient Occlusion)

    71.0 引言(Introduction) 一开始被"Ambient Occlusion"这个名字唬到了,然后又是什么"cosine distribution" ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION)

    学习目标 熟悉环境光遮蔽的基本思路,以及通过光线跟踪的实现方法: 学习如何在屏幕坐标系下实现实时模拟的环境光遮蔽. 1 通过光线追踪实现的环境光遮蔽 其中一种估算点P遮蔽的方法是光线跟踪.我们随机跟踪 ...

  4. Ambient Occlusion 环境光遮蔽 后期处理系列4

    Ambient Occlusion 环境光遮蔽 本文档主要是对Unity官方手册的个人理解与总结(其实以翻译记录为主:>) 仅作为个人学习使用,不得作为商业用途,欢迎转载,并请注明出处. 文章中 ...

  5. Learn OpenGL 笔记6.10 SSAO(Screen Space Ambient Occlusion屏幕空间环境光遮蔽)

    我们在基本照明一章中简要介绍了该主题:ambient lighting环境光. Ambient lighting环境光是一个固定的光常数,我们添加到场景的整体照明中以模拟光的scattering散射. ...

  6. 关于游戏中的Ambient Occlusion 环境光遮罩(AO)

    Ambient Occlusion环境光遮罩简称AO 讲述AO的时候需要了解下关于游戏中光照的知识 原来的游戏当中都是直接光照来绘制游戏当中的场景   直接光照指光源直接打在物体上,然后由物体反射到人 ...

  7. unity学习之环境光遮挡 (Ambient Occlusion)

    环境光遮挡效果可以使挨着折痕线.小孔.相交线和平行表面的地方变暗.在现实世界中,这些区域往往会阻挡或遮挡周围的光线,因此它们会显得更暗. 先来看一组效果: 环境光遮挡效果打开 环境光遮挡效果关闭 关闭 ...

  8. 3D建模和3D渲染技术专题一: 热身篇,光线追踪(path Tracing),环境光阴影(ambient occlusion),焦距效果(effect focus)介绍

    相比大家都看到过美国迪斯尼或者梦工厂制作的一些动画片,其中很多都是使用3D图像技术来实现的,也就是说根本不用使用摄像机就能拍出一部很好的动画片.现在想开个专题主要介绍一些3D建模和3D渲染. 我之前在 ...

  9. Global Illumination_Horizon-Based Ambient Occlusion(HBAO)

    之前我们了解过AO与SSAO(可参照之前文章Vulkan_SSAO-屏幕空间环境光遮蔽和DirectX11进阶9_AO.SSAO.Particle System(GPU)). 我们本次来看一下一种移动 ...

最新文章

  1. mysql python安装错误_mysql-python安装致命错误
  2. spring InitializingBean接口分析
  3. Selenium启动Chrome浏览器提示“请停用以开发者模式运行的扩展程序”的解决办法
  4. 基于stm32f405控制三相无刷电机例程_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案...
  5. pyqt5讲解4:QDialog,QMessageBox,QInputDialog,QFontDialog,QFileDialog
  6. 自动控制matlab实验,自动控制matlab实验.doc
  7. 编写python程序 兀 3_帮忙写一个简单的python程序π_π 要求就是图上的那样 其实挺简单的但我就是写不出来。拜托了,...
  8. ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...
  9. sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效...
  10. java 扩展接口_详解常用的Spring Bean扩展接口
  11. c语言实现路由功能,前端路由的两种实现方式,内附详细代码
  12. 图书管理系统【JavaWeb:部署开发环境、解决分类、图书、前台页面模块】
  13. 火币网交易所架构演进
  14. 远程桌面/远程登陆中强行登陆(他人退出)与切换回话(登陆后切换到上次别的登陆)3389...
  15. arm-none-linux-gnueabi-gcc:未找到命令,arm-none-linux-gnueabi-gcc编译标准库引用
  16. 任正非,马云,马化腾:真正顶级厉害的人,都有一个共同特点
  17. 基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析
  18. oracle数据库查看归档日志文件,查看oracle归档日志路径
  19. 蚂蚁金服副总裁蒋国飞:技术全面开放,与合作伙伴共发展
  20. 人生无捷径「一万小时定律·正篇」

热门文章

  1. 安装MATLAB的详细过程,一个细节都不少
  2. web导入excel(利用POI解析)
  3. R语言与数据分析(7)-R包的使用
  4. 有云说 | iPhone7防骚扰 开放云有话说
  5. mysql zip 初始密码_mysql压缩包zip安装,初始化密码以及在用户目录下直接登录mysql...
  6. VS Code中如何关闭保存Go语言文件时自动去除未引用包的行为
  7. 四足机器人中不同优先级任务的执行——Null-Space Projection方法
  8. yum本地源 baseurl repodata repomd.xml comps.xml(三)
  9. 国内外做单片机较有实力的公司
  10. Vb汇编语言书籍推荐