• 计算机图形学:光线追踪(ray tracing)


    现实中的光学模型

    在现实中,当关闭屏幕光亮的时候,会看到屏幕反射到的一张帅气或者漂亮的脸,那么这个看到的物体就是从屏幕中反射出来,其实不光镜子,任何物体都存在反射,发光源发出光线,通过物体反射到人的眼睛中

    这里要提出另一个概念,就是图形光栅化的流程没是将计算出来空间中的图形在计算机屏幕上面的每一个像素是怎么显示的,这个部分流程

    物体有着人不同的材质,但绝大多数物体表面都是凹凸不平的,所以绝大多数物体表面都会发生漫反射

    计算机中的光线追踪基本方案

    1979年,Turner Whitted提出了递归光线追踪算法,准确模拟了光线在场景中发生多次反射、折射的路径。就是这篇工作开创了光线追踪的想象空间

    其实计算机计算光线追踪和现实中的流程在原理上是基本一致的,不过计算光线追踪是从摄像头发出的光线,整个过程类似于逆向过程,全部流程大概如下:

    光线追踪全流程

    1.创建主射线:从摄像头的每一个像素点发出一条主射线,这里的摄像头可以理解为屏幕空间的像素点

    2.投射射线交互:根据每一条主射线去和和场景交互

    3.获取表面属性:根据相交的对象,获取对象的表面属性,法线,纹理坐标等,和表面的情况(有漫反射和镜面反射两种情况)

    4.递归光线追踪:根据表面特性,去递归光线,比如光线接触到玻璃的时候,光线会分成两条,分别是反射光线和折射光线

    以上四个过程的递归过程会消耗巨大的的,计算机的计算开销即为大,所以这种工作更适合GPU去计算,可以参考我的另一篇文章:

    GPU逻辑管线工作流程_星空_MAX的博客-CSDN博客

    大量的光线更适合擅长并行计算的GPU去计算

    非光线追踪与光线追踪对比图:

     

    可以看到有着开启光线追踪的《Minecraft》有着非常真是的光照反射,但是帧数大大下降

    但是1999年的顶级游戏显卡GeForce到现在的RTX3090,计算力已经提升了10000多倍

    面对未来,何不大胆想象一些呢

  • 相关阅读:
    centos7服务器安全基线检查和加固建议
    安科瑞ADL400产品功能及参数说明,适用于5G基站计量使用
    《Linux从练气到飞升》No.30 深入理解 POSIX 信号量与生产消费模型
    python编程:SQLite 管理图片数据库
    安卓布局优化详解
    渗透测试 | 域名信息收集
    数组还是HashSet?
    Socks5代理和代理IP
    SpringMVC 的三种异常处理方式详解
    极简主义,阿里P8大牛编写最新Springcloud实战笔记
  • 原文地址:https://blog.csdn.net/qq_36653924/article/details/126172476