前言 由于性能的限制,实时光照模型往往会忽略间接光因素(即场景中其他物体所反弹的光线).但在现实生活中,大部分光照其实是间接光.在第7章里面的光照方程里面引入了环境光项: \[C_a = \mathbf{A_L}\otimes\mathbf{m_d} \] 其中颜色\(\mathbf{A_L}\)表示的是从某光源发出,经过环境光反射而照射到物体表面的间接光总量.漫反射\(\mathbf{m_d}\)则是物体表面根据漫反射率将入射光反射回的总量.这种方式的计算只是一种简化,并非真正的物理计算,它直…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION) 学习目标 熟悉环境光遮蔽的基本思路,以及通过光线跟踪的实现方法: 学习如何在屏幕坐标系下实现实时模拟的环境光遮蔽. 1 通过光线追踪实现的环境光遮蔽 其中一种估算点P遮蔽的方法是光线跟踪.我们随机跟踪点P半圆内的光线,然后查看和网格相交的光线.如果跟踪了N条光线,相交了h条,那么点P的遮蔽值为: 只有交点q…
目录 Reflective Shadow Maps(RSM) RSM 的重要性采样 RSM 的应用与缺陷 Screen Space Ambient Occulsion(SSAO) SSAO Blur Horizon Based Ambient Occlusion(HBAO) SSAO 的应用与缺陷 Screen Space Directional Occlusion(SSDO) SSDO 的应用与缺陷 Screen Space Reflection(SSR)/Screen Space Ray T…
环境光遮蔽,效果示例图 图片左边是一条龙的简单模型,呈现在一个均匀照明的环境中.尽管模型中有一些明暗不同的区域,但大部分光照都是均匀的.虽然模型有着相当复杂的几何形状,但看上去比较光滑平坦,没有明显的深度感觉.图片右边是启用了 Ambient Occlusion 效果.使用了 Ambient Occlusion 后,明显的变化是图像中添加了一些包围模型的平滑阴影.基于 Ambient Occlusion 的阴影具有柔和.平滑的层次感.完全暴露在周围环境中的区域(如龙鳍)显得更亮,而光线受阻的区域…
参考文章: https://www.imgtec.com/blog/implementing-fast-ray-traced-soft-shadows-in-a-game-engine/ 完成的工程: https://github.com/yangrc1234/ScreenSpaceShadow (一个例子,注意靠近立柱的部分的阴影较为锐利,远离的部分更加模糊) Penumbra 现实生活中,距离遮挡物越近的地方,其阴影会更加锐利:反之则更加模糊.这一片介于被照亮和阴影中间的区域被称为Penum…
接着上篇文章,我们实现了SSR效果. 其中的在屏幕空间进行光线追踪的方法是通用的.借此我们再实现一种屏幕空间的效果,即屏幕空间阴影. 文中的图片来自Catlike coding http://catlikecoding.com/unity/tutorials/rendering/part-7/ 完成的工程: https://github.com/yangrc1234/ScreenSpaceShadow 原生阴影 首先我们要了解一下原生的阴影是怎么实现的,这里我们只讨论Directional Li…
Ambient Occlusion简称AO,中文没有太确定的叫法,一般译作环境光遮蔽.百度百科上对AO的解释是这样的:AO是来描绘物体和物体相交或靠近的时候遮挡周围漫反射光线的效果,可以解决或改善漏光.飘和阴影不实等问题,解决或改善场景中缝隙.褶皱与墙角.角线以及细小物体等的表现不清晰问题,综合改善细节尤其是暗部阴影,增强空间的层次感.真实感,同时加强和改善画面明暗对比,增强画面的艺术性.AO简单来说就是根据周围物体对光线的遮挡程度,改变明暗效果.AO具体理论原理在网上都可以找到,感兴趣的可以去…
之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇 SSS:Unity3d shader之次表面散射(Subsurface Scattering) PBR:Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF Screen-Space P…
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 游戏中会出现各种各样的场景,比如雪场景,草地场景,城市场景等,这些场景通常的做法是通过美术利用Max工具建模实现的,在这里我们可以使用Shader去渲染,这样可以减少美术的工作量并且能优化效率.先给…
我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率. 选定了一种参考分辨率后,美术设计人员就会固定以这样的分辨率来设计整个游戏的UI概念图:而这时就需要程序尽可能精准的匹配各种不同屏幕的分辨率. 好在Unity ugui中自带Canvas适配: 例如,我们要在手机上采用竖屏设计,可能就会用到如上这样的参考分辨率,这时Canvas画布会自动检测当前的屏幕分辨率并进行缩放. 为了更直观的了解ugui的缩放原则,我们可以…