当前位置: 首页 > news >正文

OPENGL光线追踪

纪念一下运行出了光线追踪代码,用了glfw和glad。

  1. 光线的数学表达式

一条光线实际上只是一个起点和一个传播方向,因此光线表达式为:

p(t) = e + t (s-e)

  1. 光线与球相交

已知球体的隐式方程为:

 

把光线 p(t) = e + t d 代入上述方程,得到 (e + t d - c)·(e + t d - c) - R2=0

求解得到

故已知t,即可确定交点p。

  1. 光线与平面相交

平面在空间几何中可以用一个向量(法向量)和平面中的一点P0来表示。

将光线p(t)=p0+tu,代入平面方程n·p+d=0,最后求得t:

故已知t,可以确定交点p。

shader.frag

#version 330 core
out vec4 FragColor;
in vec3 ourColor;
void main()
{FragColor = vec4(ourColor, 1.0f);
}

shader.vert

#version 330 core
layout (location = 0) in vec3 aPos;   // the position variable has attribute position 0
layout (location = 1) in vec3 aColor; // the color variable has attribute position 1out vec3 ourColor; // output a color to the fragment shadervoid main()
{gl_Position = vec4(aPos, 1.0);ourColor = aColor; // set ourColor to the input color we got from the vertex data
}       

相关文章:

  • Kafka-服务端-DelayedOperationPurgatory
  • docker:Java通过nginx获取客户端的真实ip地址
  • 【云原生之kubernetes实战】在k8s环境下部署Mikochi文件管理工具
  • 【STM32调试】寄存器调试不良问题记录持续版
  • etcd安装
  • Idea 开发环境不断切换git代码分支导致冲掉别人代码
  • 运用分布式锁 redisson
  • 第十五章 : Spring Cloud全链路监控(Pinpoint实战)
  • Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装
  • 准备的一些爬虫面试题
  • 《WebKit 技术内幕》学习之七(2): 渲染基础
  • IPv6自动隧道---6to4中继
  • 【隧道篇 / SSL】(7.4) ❀ 01. 只允许国内IP通过SSL VPN访问内网 ❀ FortiGate 防火墙
  • 开发者广告变现对接广告平台,广告瀑布流是什么?
  • GAMES104-现代游戏引擎:从入门到实践 - 物理引擎课程笔记汇总
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android系统模拟器绘制实现概述
  • CentOS从零开始部署Nodejs项目
  • Electron入门介绍
  • express如何解决request entity too large问题
  • Fastjson的基本使用方法大全
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Odoo domain写法及运用
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • sublime配置文件
  • vue-cli3搭建项目
  • 阿里研究院入选中国企业智库系统影响力榜
  • 后端_ThinkPHP5
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 坑!为什么View.startAnimation不起作用?
  • 码农张的Bug人生 - 初来乍到
  • 微信小程序:实现悬浮返回和分享按钮
  • 用jQuery怎么做到前后端分离
  • 《码出高效》学习笔记与书中错误记录
  • 阿里云API、SDK和CLI应用实践方案
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (13)Hive调优——动态分区导致的小文件问题
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode 49)Anagrams
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (力扣)循环队列的实现与详解(C语言)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)原始图像数据和PDF中的图像数据
  • .net 微服务 服务保护 自动重试 Polly