zoukankan      html  css  js  c++  java
  • 简单的环绕散射 Simple Wrap Diffuse From GPU GEMS1

      简单的环绕漫反射光照,实现起来特别简单,在Shader中加入以下几行:
      float diffuse = max(0,dot(L,N));
      float wrap_diffuse = max(0, (dot(N,L) + wrap)/(1+wrap));
      其实本质上是一个很虚假的方法,应该算是一个向量光照的Tips。本质上,环绕光照应该和全局照明模型,以及电磁热辐射理论相关。下面是调整调整系数得到的效果。光源在CameraSpace的(0,0,0)处,也就是,眼睛的位置就是射向大象模型的光源位置。

    Wrap0.25.PNG

    Wrap系数为0.25

    Wrap0.45.PNG

    Wrap系数为0.45

      另外,使用lib3ds的时候发现它的向量计算功能是在不尽人意,我就直接用NVIDIA Normal Plugins从纹理贴图转换成了向量图,不过发现好像结果还是不对头,怎么都是蓝蓝的一片。所以不得不把所有的向量计算都移到了Fragment Shader里面,没有发疯用Vertex Texture Fetch,那样就多此一举了。

      看到往下下载的3ds模型里附带的那么多零碎地小纹理,我想起了John Camark发明的MetaTexture,不知道究竟是如何实现的。

  • 相关阅读:
    this指向问题
    b继承a的函数
    如何解决跨域问题
    事件冒泡和阻止事件冒泡
    Spring5(二)——IOC
    MySQL基础(四)——
    MySQL基础(二)——常用命令
    MySQL基础(一)——入门
    Linux(二)——常用命令
    Linux(一)——简介
  • 原文地址:https://www.cnblogs.com/twodog/p/12135354.html
Copyright © 2011-2022 走看看