位置: 编程技术 - 正文

Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF(unity3d基于物理系统的2D平台跳跃游戏)

编辑:rootadmin
在实时渲染中Physically-Based Rendering(PBR)中文为基于物理的渲染它能为渲染的物体带来更真实的效果,而且能量守恒

推荐整理分享Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF(unity3d基于物理系统的2D平台跳跃游戏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d基于物理系统的2D平台跳跃游戏,unity物理效果,unity3d物理引擎介绍,unity3d物理现象模拟,unity physics,unity3d基于物理系统的2D平台跳跃游戏,unity3d物理引擎介绍,unity3d基于物理系统的2D平台跳跃游戏,内容如对您有帮助,希望把文章链接给更多的朋友!

稍微解释一下字母的意思,为对后文的理解有帮助,从右到左L为光线方向,H为半角向量,L是和V的中间,N为法线方向,V为我们&#;睛的观察方向(相机看的方向),R为反射方向Torrance-Sparrow光照模型的镜面反射公式 D为法线分布函数(NDF)F为反射函数(Fresnel 函数)G为阴影遮罩函数(几何函数),未被shadow或mask的比例此处的E就是上面的VCook-Torrance光照模型的镜面反射公式 接下来我们只用Cook-Torrance光照来做实验通常来说BRDF是关于表面多种属性的反射结果之间的线性组合(在实时渲染中一般只考虑diffuse和specular两种即可)这是unity的specular 看起来是不是特别像塑料?还是粗糙的塑料接下来我们就来讨论D函数的不同带来的specular的不同BlinnPhong的分布函数Call of Duty : black Ops 2/使命召唤:黑色行动2就使用了它 在 微平面模型是广泛应用的对rough surface建模的工具, blinn,ward,beckmann都属于microfacet的推导结果。基本思想也很简单,就是用很小的微平面的组合去模拟粗糙的物体表面。而这些微小的平面元则可以当做完美的反射或者折射表面。每个microfacet把一个入射方向的光反射到单独的一个出射方向,这取决于microfacet的法向m。当计算BRDF的时候,光源方向l和视线方向v都得给定。这意味着在表面上的所有microfacet中,只有刚好把l反射到v的那部分对BRDF有贡献。在下图中,我们可以看到这些有效microfacet的表面法向m正好在l和v的中间,也就是h。

D为法线分布函数(NDF),在大部分表面上,microfacet的方向不是均匀分布的。Microfacet的法线越接近宏表面的法线,就越光滑。这个分布由microfacet的法线分布函数D(m)来定义。函数D()决定了specular高光的大小、亮度和形状。 法线分布函数一般有类&#;于“粗糙度”这样的参数。F为反射函数(Fresnel 函数),计算光学上的反射比率。分母4(n•l)(n•v)是个校正因子,用来校正从microfacet的局部空间转到整体表面的数量差异。V为能见度函数,阴影遮罩分类为透视缩减关于G , G为阴影遮罩函数(几何函数),未被shadow或mask的比例在上半部分,平的宏表面为绿色,粗糙的微观表面为蓝色。m = h的 microfacet标记为红色。宏表面投到视线方向就是左上角的绿线。同时,投出来的单个红色的microfacet显示成独立的红线。左下图表示在没 有遮挡项的情况下,红色的microfacet加起来的面积,结果就是有效面积大于总面积,所以BRDF的反射能量错误地大于了接收能量。右下图里红色区 域考虑了遮挡,重叠的区域不再计算多次,所以有效面积小于总面积。 α为Specular的强度,Specular的强度是根据光泽度gloss确定的Schlick提出的fresnel方法: rf0是反射颜色,也是roughness粗糙程度 遮挡项使用了Schlick-Smith提出的方法 处于能量守恒考虑,漫反射多了镜面反射就要少,反之亦然所以: 效果如下: 看起来很像抛光的大理石效果吧主要代码如下:插入代码:_SC 为specular color,_SP 为specular powerPhong的分布函数 为D&#;(NDF)cosθ&#;为N与H的点积,以下皆是如此,H为半角向量,也就是light direct光线方向和view direct视角的一半。α即为本函数的specular power 这是不同specular power的实现曲线,越高代表约粗糙,越低代表约光滑效果也很不错 核心代码如下:Beckmann的分布函数

secθ为1/cosθ;

曲线如下 本曲线为α&#;为0.时,局部出现了0的0次方,这与phong不同,使得粗糙表面的统一分部可行 如果超过了0.就会出现上面这种不该出现的情况,局部出现了近&#;0的最小&#;

这是Beckmann和phong的对比(粉色为Beckmann,蓝色为phong)

左面的图是关于粗糙表面的曲线,两者都差不多,对于右侧光滑的表面,两者相差很多。效果如下: 主要代码如下:Trowbridge-Reitz(GGX)的分布函数

为实现方程

曲线如下: 左侧是参数&#;较低的情况,右侧是参数&#;较高的情况左侧有点像Beckmann(越高越粗糙),右侧也是像Beckmann出现了最粗糙的地方 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF(unity3d基于物理系统的2D平台跳跃游戏)

这是与phong的比较

他们两个差不多,但是Trowbridge-Reitz高的地方比较尖,矮的地方拖尾较长与phong的最终比较。

效果如下:

个人感觉这是效果第二好的方法

核心代码如下:

Shifted Gamma Distribution的分布函数 没错,就是这么长,alpha和gamma都是外部可控变量 效果如下: 个人认为效果最好的方法,可控变量多,出来的效果多,但是感觉计算起来很消耗啊代码如下:最后放上一个全家福

参考:

1. Mathematica Notebook for the SIGGRAPH talk “ Background: Physics and Math of Shading”

2. PhysicallyBased Lighting in Call of Duty: Black Ops

----- by wolf

Unity3D学习笔记之七创建自己的游戏场景 到现在为止我们已经拥有了比较完备的Prefab,已经可以创建宏大的游戏场景,并以第一人称视角在场景中漫游了。这里给大家做个小的示范,建一个小

Unity3d 基于物理渲染Physically-Based Rendering之实现 根据前文的例子

unity3d 中实现猜拳游戏 usingUnityEngine;usingSystem.Collections;publicclasscaiquan:MonoBehaviour{publicRectr1;publicRectr2;//publicTexturet1;//publicTexturet2;//publicTexturet3;publicTexture[]textures;publicintcomputerCP;pu

标签: unity3d基于物理系统的2D平台跳跃游戏

本文链接地址:https://www.jiuchutong.com/biancheng/383572.html 转载请保留说明!

上一篇:Unity脚本C#参数相互传递(unity脚本调用)

下一篇:Unity3D学习笔记之七创建自己的游戏场景(unity3d基础教程)

  • 组织员工活动方案
  • 增值税现代服务业6大行业
  • 免税农产品发票开具时税率怎么选
  • 出口退税勾选后多久可以申报退税
  • 收到赞助商品的发票
  • 进项税加计抵减生产性服务
  • 存货期末结存量的公式
  • 用友软件销售操作流程
  • 长期股权投资减值准备
  • 企业公益性捐赠支出税前扣除标准
  • 服务免税销售额
  • 取得成本发票
  • 进项税使报表应交税费负数如何处理?
  • 一般纳税人可以开3%的发票吗
  • 外管证交税需要带什么材料
  • 代开的专票开错了怎么办?
  • 增值税发票查验平台官网网络异常
  • 企业出租收入增值税税率
  • 一般纳税人所说的税率是
  • 开票满500万一定会升一般纳税人吗
  • 境内企业技术转让 增值税
  • 上年度多计提的工资怎么冲减
  • 销售产品的成本属于什么科目
  • 报税的销售额怎么改数字
  • 跨年收入能开发票吗
  • 苹果电脑任务栏跑到左边去了
  • 变动成本法和完全成本法利润差异
  • win11怎么用win10界面
  • 公司收到加盟费怎么做会计分录
  • 为什么windows10关机后自动开机
  • 投资性房地产出售
  • mac怎么删除cineware
  • 没收入长期待摊怎么办
  • pytorch说明文档
  • yolov5m
  • php定时发送邮件
  • 银行转账费用试算失败什么意思
  • 嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 | 文末赠书4本
  • 学人工智能哪家机构比较好
  • vue3.0中的ref
  • 异地预缴的附加税在申报税时会抵消掉么
  • 固定资产投资入股是否缴纳增值税
  • mysql怎么处理特殊字符数据
  • 预收账款什么时候确认增值税
  • 机械租赁费税率是多少
  • 装订会计凭证步骤
  • 计划成本法实际成本怎么算
  • 哪些普通发票可以抵扣
  • 差额征税要交多少钱
  • 票据承兑和贴现是指
  • sql server 2008使用
  • sql解析执行顺序
  • 增资扩股和股权转让一样吗
  • 企业所得税余额为负数
  • 税金及附加需不需要计提
  • 租办公室自己装修可以拆走吗
  • 总分类账的登记依据和方法取决于企业所采用的
  • 转让股权收入属于收入总额吗
  • 车间管理人员的福利费计入什么科目
  • 质保金怎么做账
  • 低值易耗品意思
  • 员工入股会计分录
  • 新车一次能开多少时间
  • 托管服务费开什么发票
  • 年终结账账务处理
  • win10预览版好吗
  • solaris教程
  • fsma32.exe进程是什么文件 fsma32是什么进程
  • PQIMountSvc.exe是什么进程 PQIMountSvc进程查询
  • 批量装win7
  • win7系统如何隐藏盘符
  • shell操作oracle数据库
  • flex开发工具
  • js实现拖拽元素改编顺序
  • 安徽省马鞍山地区代码
  • 威科先行法律信息库价格
  • 税务核查是什么意思
  • 纳税申报的期限是多久
  • 退回多扣的个人所得税会计分录
  • 注销的卡补回来还能恢复以前的套餐吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设