zoukankan      html  css  js  c++  java
  • Unity ShadowMapping

    原理:

    场景中一个plane,一个cube,一个light,一个mainCamera

    为了在plane上呈现cube的shadow,先在light上放一个lightCamera(位置方向跟light相同)

    把light角度看到的深度图(注意是深度数据,而不是light角度看到的完整图像)保存到一个RenderTexure

    在mainCamera的角度,计算plane上某个点P的颜色时,比较从mainCamera看到这个点P的深度值和从RenderTexture中取出的深度值

    如果前者深度大说明这个点P在阴影中,相反则不在阴影中



    具体实现细节:

    1 记录计算灯光视野下的深度信息到RenderTexture

    2 找到相机视野下某个点P在灯光视野下对应的P',P'和RenderTexture中某个像素点会有一个对应关系,找到这个有对应关系的像素点

    3 读取像素点中的深度Zb,并跟相机视野下P的深度Za做比较,判断相机视野下P点是否在阴影中

    精度优化:



    参考

    基于shadow Mapping的阴影

    http://blog.csdn.net/zjull/article/details/11740505


    Shadow Map 原理和改进

    http://blog.csdn.net/ronintao/article/details/51649664


    http://blog.csdn.net/aceyan0718/article/details/52067264


    https://chengkehan.github.io/ShadowMap.html


    有具体实现代码

    https://github.com/kokichi88/shadowmapping

  • 相关阅读:
    模块 hashlib模块
    设计模式
    类中双下方法
    工作小结 常见定制类
    python collections模块
    启动脚本
    anaconda镜像
    理解python的可变参数
    使用spark
    python 异常处理
  • 原文地址:https://www.cnblogs.com/nafio/p/9137212.html
Copyright © 2011-2022 走看看