ray

WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研

﹥>﹥吖頭↗ 提交于 2020-04-18 07:43:06
大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况。 另外,本文对实时光线追踪也进行了简要的分析。这是我非常感兴趣的技术方向,也是图形学的发展方向之一。本系列后续文章会围绕这个方向进行更多的研究和实现相关的Demo。 上一篇博文: WebGPU学习(四):Alpha To Coverage 下一篇博文: WebGPU学习(六):学习“rotatingCube”示例 本文内容 前置知识 技术要点 并行 Multiple Queues 同步 多线程 内存管理 延迟渲染 Defer Shading Textureless Defer Render GPU Driven Render Pipeline Approaching zero driver overhead GPU Cull GPU Lod Hybrid Render For Real-time Ray Tracing 混合渲染 如何使用WebGPU学习和实现Ray Tracing 学习资料 其它 Bindless Texture Virtual Texture Tessellation Mesh Shader 前置知识 现代图形API包括哪些API? 包括DX12、Vulkan、Metal MVP是什么?

【Ray Tracing in One Weekend 超详解】 光线追踪1-2

北战南征 提交于 2020-04-18 07:42:30
今天我们开始进入正篇 Chapter 3: Rays, a simple camera, and background    对于所有的光线追踪器,基本都有一个光线类,计算沿光线看到的颜色。   我们的光线是一个矢量运算:             p (t) = a + t * b . 书中的向量用大写粗体字表示,但这里我遵循一般表示法:矩阵为粗体大写字母,向量为粗体小写字母,而标量为正常字体 P是光线指向的目标位置,a是光线的起点,b是光线指向的方向,t则是光线步长。 如图:        我们如下定义ray-class /// ray.h // ----------------------------------------------------- // [author] lv // [begin ] 2018.12 // [brief ] the ray-class for the ray-tracing project // from the 《ray tracing in one week》 // ----------------------------------------------------- #ifndef RAY_H #define RAY_H #include <lvgm\type_vec\type_vec.h>   // https://www

【Ray Tracing in One Weekend 超详解】 光线追踪1-8 自定义相机设计

老子叫甜甜 提交于 2020-04-18 06:56:10
今天,我们来学习如何设计自定义位置的相机 ready 我们只需要了解我们之前的坐标体系,或者说是相机位置 先看效果 Chapter10:Positionable camera 这一章我们直接用概念贯穿整章 1. fov : field of view 它是一个角度 它分为两种:垂直方向岔开的角度(vfov)和水平方向岔开的角度(hfov) vfov即相机在垂直方向上从屏幕顶端扫描到底部所岔开的视角角度 hfov即相机在水平方向上从屏幕左端扫描到右端所岔开的视角角度 2. aspect :屏幕宽高比 我们之前是通过直接定义屏幕的坐标位置来确定屏幕,现在,我们可以通过相机参数来确定屏幕 目前,我们暂时还用ready中的坐标,相机在原点,屏幕中心在(0,0,-1) 我们习惯采用vfov,这里我们假设一直vfov和aspect 眼睛离屏幕中心的距离为dis(也就是1) 根据 tan(vfov/2) = (屏幕高/2)/dis 得到 屏幕高 = 2 * dis * tan(vfov/2) 则,屏幕上边界为 y_up = dis * tan(vfov/2)   屏幕下边界为 y_bottom = - y_up  屏幕宽 = 屏幕高 * aspect 则,屏幕左边界为 x_left = - 屏幕宽/2   屏幕右边界为 x_right = - x_left 所以,我们目前的相机类如下: ///

Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器

ε祈祈猫儿з 提交于 2020-04-10 10:56:44
一、本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要设置enctype="multipart/form-data" ( http://blog.csdn.net/mazhibinit/article/details/49667511 ) 3.上传本地临时素材到微信服务器的流程 (1)建立与微信服务器的网络连接 (2)从连接中获取输出流(写入微信服务器的),将本地文件以文件流的形式 写入输出流 (3)从连接中获取输入流(微信服务器返回的),获取输入流中的微信服务器返回的数据(type、media_id、created_at) (4)上传完素材就要使用素材了:这时,我们拿着上一步的media_id,去做发送图片消息的测试。 二、代码实现 1. 微信上传素材的请求方法 public static String httpRequest(String requestUrl, File file) /** * @desc :微信上传素材的请求方法 * * @param requestUrl 微信上传临时素材的接口url * @param file 要上传的文件 * @return String 上传成功后,微信服务器返回的消息 */ public

Ray类定义

北战南征 提交于 2020-03-31 04:47:26
定义光线,书中已经有原理。 类声明: #ifndef __RAY_HEADER__ #define __RAY_HEADER__ #include "geometry.h" class Ray { public: Ray(); ~Ray(); Ray(const Point3& ori , const Vector3& dir); Ray(const Ray& r); Ray& operator=(const Ray& r); Point3 o; Vector3 d; }; #endif   类实现: #include "pch.h" #include "ray.h" //光线应该新建一个文件,这里是ray.h Ray::Ray() :o(), d() {} Ray::~Ray() {} Ray::Ray(const Point3& ori, const Vector3& dir) : o(ori), d(dir) {} Ray::Ray(const Ray& r) : o(r.o), d(r.d) {} Ray& Ray::operator=(const Ray& r) { if (this == &r) return *this; o = r.o; d = r.d; return *this; }    来源: https://www.cnblogs.com/dalgleish

2019年图灵奖,颁给了图形学的传承

时光怂恿深爱的人放手 提交于 2020-03-23 17:23:41
3 月,跳不动了?>>> 3月18日,国际计算机学会(ACM)公布,计算机图形学奠基者Patrick M. Hanrahan和 Edwin Catmull 共同获2019年图灵奖。 ACM 提到,图灵奖颁给这两位,以表彰他们对3D计算机图形学的贡献,以及对电影制作和计算机生成图像等应用的革命性影响。1988年图灵奖颁给计算机图形学之父 Sutherland,2019年 Sutherland 的学生 Catmull 加入图灵奖获得者行列。 时隔三十二年,图形学作为一个学科第二次获奖,某种意义上是给予图形学传承的一个肯定。从Sutherland起源,到今天Pat 和 Ed 获得贡献奖,也无疑给整个图形学社区带来了莫大的精神鼓舞,毕竟作为一个要求码力超强,理论扎实的学科并没有像计算机视觉一样容易入门。 图形学的骄傲:Pat 与 Ed Edwin Catmull,是著名计算机科学家,皮克斯动画工作室联合创始人、前总裁,曾参与创办了现代视觉特效的起源地 NYIT 计算机图形实验室。因为其技术,Catmull曾先后 9 次获得奥斯卡金奖,影视圈莫不熟知。 Patrick Hanrahan 目前担任斯坦福大学计算机图形学实验室教授,但曾也是皮克斯动画工作室创始员工之一。 25年前《玩具总动员》家喻户晓,其背后的皮克斯动画工作室也正风生水起,那时候Catmull 和

为什么火星需要闰日?

房东的猫 提交于 2020-03-05 11:56:07
  地球公转的精确数字是 365.2422 天,因此我们每四年都要增加一个闰日,今年的闰日是 2 月 29 日。但由于公转时间不是恰好为 365.25 天,因此日历还需要微调以处理多出来的一点点时间:如果年份能被 100 整除但不能被 400 整除,那么这一年没有闰年,比如 1900 年就不是闰年,2100 年也不是。    火星也存在类似的情况 ,一火星年是 668.6 火星日,所以火星日历年只持续 668 天,它需要闰日去处理那 0.6 天,否则季节很快会不一致。太空法专家 Thomas Gangale 在 1985 年创造了 Darian 火星日历,将一年分成 24 个月,每个月 27 或 28 火星日。为了维持日历与火星季节的一致,Gangale 提议偶数年(排除能被 10 整除的年份)有 668 火星日,奇数年 669 火星日,平均下来一年为 668.6 火星日。   这不是唯一一种能达到这一平均数的日历。   已退休的 NASA 科学家 Michael Allison 博士提出了 另一种日历 ,保留与地球日历相似的 12 个月,但增加 10 个月,用著名天文学家或科幻作者 Johannes Kepler 和 Ray Bradbury 等人的名字命名。他提议能被 5 整除的年份有 3 个闰日有 671 天,其它年份只有 668 天。 来源: oschina 链接:

Out of Memory with RAY Python Framework

橙三吉。 提交于 2020-03-05 00:32:49
问题 I have created a simple remote function with ray that utilizes very little memory. However, after running for a short period of time the memory increases steadily and I get a RayOutOfMemoryError Exception. The following code is a VERY simple example of this problem. The "result_transformed" numpy array is being sent to the workers where each worker can do work on this. My simplified calc_similarity function does nothing, but it still runs out of memory. I have added much longer sleep times to

Unity API常用方法和类(三)

两盒软妹~` 提交于 2020-03-01 16:15:34
一.射线检测 【1】Raycast (1)基本方法 检测物体player前方是否有物体 void Update () { Ray ray = new Ray(transform.position+transform.forward, transform.forward); bool isCollider = Physics.Raycast(ray); Debug.Log(isCollider); } (2)重载方法 <1> void Update () { Ray ray = new Ray(transform.position+transform.forward, transform.forward); bool isCollider = Physics.Raycast(ray, 1); //player在1米范围内才能检测到敌人 Debug.Log(isCollider); } <2> Ray ray = new Ray(transform.position+transform.forward, transform.forward); RaycastHit hit; bool isCollider = Physics.Raycast(ray, out hit); Debug.Log(isCollider); Debug.Log(hit.collider); Debug.Log

DVDFab 11 for Mac(DVD光盘复制软件) v11.0.7.5中文版

。_饼干妹妹 提交于 2020-03-01 10:13:04
DVDFab 11 Mac版是一款 Mac 上强大的DVD和蓝光光盘复制转换工具,其包含了 DVD 复制、DVD 转换、蓝光复制、蓝光转换、蓝光到 DVD、2D 到3D 转换等等功能,是集成了多种功能于一体的光盘处理工具,需要的小伙伴快来看看吧! DVDFab 11 for Mac下载 https://www.macdown.com/mac/6593.html DVDFab All-In-One是完整复制和转换DVD和蓝光DVD的解决方案,在一个简单的和快速的方式备份的DVD。复制,RIP,克隆,分裂,合并,烧伤,定制,和更多。支持蓝光容易和快速。复制,RIP,克隆,烧伤,写数据和更多。 DVDFab 11版软件特色 几乎所有DVDFab产品的多功能和完整组合 适用于Mac的DVDFab All-in-One绝对是当前所有DVDFab产品与Mac的所有完整功能的完美集成。 解决您所有DVD /蓝光/视频问题的终极解决方案 适用于Mac的DVDFab All-In-One是解决所有DVD /蓝光/视频问题的最终解决方案。随附的DVD选项,蓝光选项,视频选项,Cinavia删除选项和文件传输选项使您能够将DVD /蓝光自由复制/刻录/克隆到任何空白DVD光盘或Mac的硬盘上,以进行显示或备份 将DVD /蓝光/视频翻录并转换为几乎所有流行的视频/音频格式或设备,以支持视频播放