软阴影(PCF、PCSS)
软阴影与硬阴影的区别如下:上面为硬阴影,下面为软阴影。
Percentage Closer Filtering (PCF)
PCF最初是用来做抗锯齿的,后来发现可运用于软阴影上(PCSS)
从相机出发看向场景中的一点,记录该点的深度,将这点投影到光源照向场景的深度图(shadow map)中(在光源的深度图中寻找这一点的深度)。
在硬阴影中讲到比较该点的深度和光源的深度图中的深度进行比较,若不匹配说明有遮挡(为阴影区域),否则为可见区域。
在这里我们不仅仅找该点的深度,在shadow map上还要找该点周围的点的深度。
- 假设这里取3X3的区域。
- 将区域内的每一个点的深度与该点(中心点/投影的点)的深度进行比较(每次比较后的值为1 or 0 ,1为小于该点的深度(可见),0为大于该点的深度(不可见))。
- 进行比较后将比较后的值平均起来为0.667。
结果:(可到达抗锯齿的目的)
Percentage Closer Soft Shadows (PCSS)
将前面的PCF进行推广,如果filter变得特别大那么阴影就变成了软阴影!但是filter到底要如何变大,那一部分变大,变大到那种程度上才能得到最真实的效果?
比如上图,笔尖的地方接近硬阴影,笔帽的地方接近软阴影。可以观察到规律:阴影距离投射物越近越接近硬阴影,阴影距离投射物越远越接近软阴影。
所以要做软阴影,需要在物体阴影的不同位置上有不同大小的filtering-size,filtering-size与遮挡物与阴影的距离blocker distance有关.
PCSS步骤:
在第一步做blocker search的时候该使用多大的区域呢?
一般有两种解决办法:
1.使用5X5的格子
2.如下图:
示例图
软阴影(PCF、PCSS)相关推荐
- 【GAMES-202实时渲染】1、软阴影01(Shadow Mapping、Peter Panning、PCSS原理超详细)
Lecture3 Real-Time shadows1 1 Shadow Mapping回顾 2 Shadow Mapping缺点及解决方案 2.1 自遮挡现象 解决方案1 定义一个bias 解决方案 ...
- GAMES202 PCSS软阴影算法细节解析
在LearnOpenGL框架的基础上实现了一遍GAMES202的PCF+PCSS软阴影,之前学习GAMES202时一些没弄清楚的问题顺便搞清楚了. 注:本文中代码和shader均在笔者自学LearnO ...
- GAMES202 PCF PCSS 环境光渲染
软阴影 Percentage closer soft shadows PCSS Shadow Mapping 两次渲染场景 第一次从光源看向场景,输出一个深度 shadow_map (每个方向/物体 ...
- Vulkan_PCSS软阴影
本文简述实现,具体步骤原理可查看闫大神高质量实时渲染. 一.PCSS简介 1.1 PCF 百分比渐近过滤(PCF)是一个简单,常见的进行阴影边缘反走的技术.它通过在片段周围进行采样,然后计算样本比片段 ...
- unity3d软阴影和硬阴影的原理_使用随机采样创建软阴影
本文是OpenGL 4.0 Shading Language Cookbook的学习笔记. Shadowmap的基础实现结合PCF可以产生软阴影.但是,如果想要更大宽度的软阴影,这种方法需要增加大量采 ...
- 一种软阴影的实现方法
转载自:http://hi.baidu.com/laizhishen/blog/item/b4c219dee23df1e177c63851.html 软阴影 www.GameDev.net 作者:An ...
- ShaderJoy —— 最简单的软阴影(SoftShadow)实现【GLSL】
效果图 关键思路解析 要实现阴影最核心的思想:就是要从场景中各个物体上的点 朝着光线的方向进行 Raymarching,如果经过 SDF 测试以后,发现有阻挡,则我们可知该像素是位于阴影区域的: 软阴 ...
- 333lu.vip.php,软阴影 - GameRes.com
// Projecti= on matrix for the light<= /span>D3DXMatrixPerspectiveFovLH(&matPro= j, D3DXTo ...
- unity3d软阴影和硬阴影的原理_在广告摄影中阴影和高光的重要作用和控制技巧...
投影和高光在大多数广告摄影画面中是不可避免的(除非像无投影布光或被摄体为非光洁表面),但又往往是影像的重要的组成部分. 投影和高光的存在,既有助于造型和质感的表现,但处理不当时,又会破坏画面和使人感到 ...
最新文章
- Scrum敏捷看板工具leangoo-销售流程管理
- 微软软件测试的可借鉴之处
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看
- 2017-06-09 问题
- 详解数据挖掘与机器学习的区别与联系
- SQL Server安装计划
- LeetCode 3sum 问题
- 计算机网络设备配置遇到的问题,网络设备使用与维护
- vue引用jquery
- 轴承系统动力学模型matlab程序代码
- Theano入门神经网络(一)
- wps将批量数字转换成条形码_wps批量形成条码
- 恭喜腾佑当选“河南省企业上云推进联盟”理事单位!
- 网站banner设计有什么好的方法
- Exp2 后门原理与实践 ——20164316张子遥
- 微信小程序 教你如何复制页面路径 (以及京东、虎牙、苏宁、拼多多、等大厂的加密路径详解)(多图!!!)
- 教你炒股票29:转折的力度与级别
- 【建筑性能分析入门笔记】建筑能耗建模(1)
- 邮箱密码忘了怎么找回?电子邮箱密码怎么改和填写?
- 通过Swap函数交换两个变量的值
热门文章
- Android Weekly #37 :寻找知识的能力是一个非常重要的能力,如果找不到,你就只能等着别人来投喂...
- 计算机网络 - 练习(二百三十三)
- 8个经典数据分析模型
- 微信图片消息 服务器故障,解决图片上传到微信服务器后无法显示问题
- Android 四大组件之 BroadcastReceiver_3 实现开机启动拦截电话服务
- Java中字符串开头,java中如何判断字符串是以什么开头
- 科技岗位日趋增长,能成为女性职业选择的新可能吗?
- 【笔记】MATLAB文件中文乱码问题:使用记事本打开,保存成不同的格式,然后再使用Matlab打开观察结果
- [深度学习][原创]常用ocr框架和技术总结
- 谷粒学院(十七)讲师列表页 | 讲师详情 | 课程列表页 | 课程详情 | 整合阿里云视频点播