根据前文的例子 =,弄了一下。公式和之前的文章一样,这次加上cubeMap贴图,由于方便,就直接用surface shader了,因为不用求reflect方向,之前也有这一篇文章说明surface shader中cubeMap的使用方法和实时反射的方法 这是他们给出的代码,求的是F(L,H)函数的,其中g为gloss光泽度,NoV为NdotV,N、V等等的含义在前篇文章也讲过,rf0我们就让他为可控的外部变量。复习一下Cook-Torrance光照模型求specular的方法可以简单概括为这个公式 本次计算沿用上次方法, 但改用specular power变量_SP为gloss光泽度为本篇定义外部变量_GL控制,具体装换方法_SP = pow(, _GL)也就是specular power为的gloss倍,借用这个已经调好的参数,也算是站在巨人的肩膀上了。Ops2的开发人员称他们的brdf为Environment map pre-filtering模拟了环境光照射原文说明the environment map blurs much more linearly across the gloss rangeGloss的范围使环境贴图的模糊更加的的线性,接下来的例子我们就可以看到结果首先我们定义出光照函数,具体算法与前篇相同不在此赘述。只是把F(L,H)函数BRDF改成上面经过改进的方法,代码如下:在surf函数中我们要解码cubeMap传给light函数,再此注意,我们用的不是texCUBE而是texCUBElod,看了函数名就知道不仅解出颜色,而且也控制lod,lod为level of detail,细节程度,我们通过控制他的第二个参数的w来控制细节,通过这个我们能改变他的粗糙度,这也是基于物理的渲染的灵魂所在,我们要使光泽度gloss越低越粗糙。我们定义一个外部变量_nMips来控制,从而调试成我们想要的效果。在surf函数中也需要计算BRDF,为了控制light中的specular比重,使之更加真实效果如下: 我又做了各种实验,根据前篇改变了NDF函数这是phong分布函数 Beckmann分布函数,他们都不一样,仔细比对就会发现Beckmann的高光比较强,比较突兀 Torrance-Reitz(GXX)分布函数 结果发现ops2的效果还是最好的,其次是Torrance-Reitz再来个全家福给出ops2的全部代码,其它的根据前篇代码带入更改即可 ----by wolf
推荐整理分享Unity3d 基于物理渲染Physically-Based Rendering之实现(unity3d物理现象模拟),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:unity3d物理引擎介绍,unity3d物理现象模拟,unity3d基于物理系统的2D平台跳跃游戏,unity physics,unity physics,unity3d基于物理系统的2D平台跳跃游戏,unity3d物理现象模拟,unity物理系统,内容如对您有帮助,希望把文章链接给更多的朋友!
unity3d 中实现猜拳游戏 usingUnityEngine;usingSystem.Collections;publicclasscaiquan:MonoBehaviour{publicRectr1;publicRectr2;//publicTexturet1;//publicTexturet2;//publicTexturet3;publicTexture[]textures;publicintcomputerCP;pu
unity3d加密代码结束篇 确定Mono可以成功后,我就自己修改了它的源代码,一开始虽然不顺利,但幸运的是可以用g_warning打印。通过打印发现自己多解密了一个字节。最终成功
委托、事件、单例在Unity3D中的使用 原文请点击这里翻译:claudioHereIdemonstratehowtocreatedelegates,eventsandsingletonstoworkinconjunction.ThistutorialiswrittenforUnity3D,However,similarcodecanbeusedforanyC#or.NETapplication.