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)处,也就是,眼睛的位置就是射向大象模型的光源位置。



    Wrap系数为0.25



    Wrap系数为0.45

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

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

  • 相关阅读:
    5 粘包现象与解决方案
    4 Socket代码实例
    协程与多路io复用epool关系
    基于selector的socket并发
    基于select类型多路IO复用,实现简单socket并发
    协程实现多并发socket,跟NGINX一样
    利用协程实现简单爬虫
    协程
    进程池pool
    进程锁 Lock
  • 原文地址:https://www.cnblogs.com/Jedimaster/p/717830.html
Copyright © 2011-2022 走看看