皮肤的实时3S渲染(OpenGL + GLSL)
人的皮肤之所以看上去比较柔和自然,主要是由于各层皮肤对光线的散射,通过实验测试表明,光线接触到皮肤时,有大约96%被皮肤各层散射了,只有大约4%被反射。下面就是光线经过皮肤散射和反射的示意图(摘录自Gary J. Katz的"Skin Rendering"):
这种皮肤各层对光的散射就是次表面散射效果(SubSurface Scattering),简称3S效果。这种效果的一种计算模型是Jensen的BSSRDF模型。BSSRDF中计算Rd的方程如下:
次表面散射分为2种:Single Scattering和Multiple Scattering,因为皮肤散射是以Multiple Scattering为主,所以这里我只计算皮肤的Multiple Scattering效果。我这里采用的方法是Carsten Dachsbacher和Marc Stamminger的论文"Translucent Shadow Maps"中描述的方法,就是以光源为视点来计算得到Irradiance Map, Depth Map和Normal Map,分别用来存储Incoming Irradiance , Depth和Normal(以光源为视点)。这里比较关键的是如何从Camera Space转换到Light Space,窃以为Paul's Project的关于空间转换的示意图很是经典,清晰明了,让人一看即明白,现摘录如下:
我这里使用OpenGL+GLSL来实现Translucent Shadow Maps,首先用FBO来渲染3张Texture:Irradiance Map, Depth Map和Normal Map,然后通过获取每个Fragment的Irradiance, Depth和Normal,根据上面所讲的公式来计算Rd,然后通过hierarchical filtering(通过MipMaps)来模拟Multiple Scattering,这里采用的是"Translucent Shadow Maps"论文中的21采样点过滤法,如下图所示:
最后的实现效果截图如下:
上图左边的3张图分别是:Depth Map, Irradiance Map和Normal Map(以光源为视点)。
下一步工作:
1。优化,提高效率;
2。支持纹理贴图;
3。支持动画。
欢迎广大同好交流、批评和指正,any comment will be welcomed!
转载于:https://www.cnblogs.com/skyman/archive/2008/04/21/skinrender.html
皮肤的实时3S渲染(OpenGL + GLSL)相关推荐
- 实时渲染、离线渲染、实时云渲染、混合渲染是什么?
渲染,就是将 3D 模型转换成 2D 图像,并最终呈现在屏幕上的过程.虽然这里只有一句话,但是这一句话里面包含了太多的数学.物理和计算机方面的知识,它描述了我们用计算机来虚拟化真实世界的基本逻辑.渲染 ...
- OpenGL GLSL Shader Subroutines函数的实例
OpenGL GLSL Shader Subroutines函数 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <shader.h> ...
- 美摄云非编系统——网页端实时编辑渲染方案
美摄云非编是一款新型网页端非线性编辑工具,应用WebAssembly技术实现网页端直接渲染图像.本次LiveVideoStackCon 2020线上峰会我们邀请到了北京美摄网络科技有限公司的研发总监黄 ...
- OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式
(原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html) OpenGL, GLSL, DirectX, ...
- 【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙
2021年伊始,元宇宙 概念不断扩展探讨与深入,国内外科技巨头扎堆布局元宇宙. 元宇宙第一股------ROBLOX 上市.字节跳动 90亿收购国内TOP1VR厂商PICO.FACEBOOK改名为ME ...
- 专访深职院XR专家 | 实时云渲染赋能虚拟仿真实训,打造5G+XR智慧教育平台
"职业教育与普通教育是不同教育类型,具有同等重要地位,是国民教育体系和人力资源开发的重要组成部分,是培养多样化人才.传承技术技能.促进就业创业的重要途径."--<中华人民共和 ...
- 一个实用的实时毛发渲染及着色方法
一个实用的实时毛发渲染及着色方法 Thorsten scheuermann ATI Resarch,Inc. 翻译:潘曦 (译文里的(pancy:XXX)为译者注) 介绍: 我们提出了一个使用多边形模 ...
- 实时云渲染和本地渲染的区别
不少用户不能理解,为什么要选用实时云渲染,而不用本地的电脑进行渲染显示?本文将通过各个方面来对比两种模式的优劣支持,帮助您更全面了解实时云渲染和本地渲染. 一.便携性对比 由于GPU对机箱空间有要求, ...
- 实时云渲染有哪些优势?
随着元宇宙的兴起,作为六大核心技术之一的实时云渲染技术引发了剧烈的讨论.很多还在使用传统实时渲染的小伙伴们就有点蠢蠢欲动,试了到底是不是真的好用?每当新事物出现时,总有人会迟疑,但是越是迟疑越可能赶不 ...
最新文章
- Windows MySQL8.0安装出错解决方案(Start Server 失败)
- python 包管理工具poetry
- 【杂谈】有三AI知识星球最近都GAN了哪些内容?
- Atlassian和Slack达成战略伙伴合作关系
- 【ZZ】详解哈希表的查找
- 关于jQuery对象(类数组对象)以及DOM对象相互转化问题——[object Object]和[object HTMLInputElement]
- php关注 取消关注事件,微信公众平台开发关注/取消关注事件例子
- android外接键盘打汉字,Android在外接物理键盘时,如何强制调用系统软键盘
- 详解HelloWorldBasic实例
- 强大的Spring Boot启动监听器事件-初始化系统账号密码
- 【LA3487】最小割-经典模型 两种方法
- springcloud配置负载均衡 及方式_Springcloud-Ribbon负载均衡NODO
- mysql 要完 知乎_必知必会 MySQL笔记(未完)
- 基于ffmpeg+SDL的加密视频播放器的开发(一)
- 贴片铝电容识别及型号_贴片式铝电解电容常用型号封装
- 2022年计算机保研记录(计算所、浙大、华科、东南、北航)
- PRi——自行车码表
- 企业印章使用与管理办法
- 【CAN】PCAN连线
- 机器学习之金融信贷风控(一)互联网金融业申请评分卡的介绍
热门文章
- 【Linux】Linux中vim的使用
- 教你怎么在vi和vim上查找字符串
- 运行mysql数据库的命令_mysql 数据库常用命令
- Leetcode题库 145.二叉树的后序遍历(递归 C实现)
- TCP传输-出现差错的解决办法
- mysql 数据库dbhelp_C# VS连接数据库DBhelp
- 将台式机组成云服务器_云桌面是什么?用了两年云桌面的真实感受
- go channel 缓冲区最大限制_[Go区块链基础]go channel
- 证券回购市场repo market
- Android -ui控件