问题标签 [hdr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从 HDRi LatLong 贴图直接渲染到浮点立方体贴图 - 不是 HDR
我有一个 HDR 辐射环境贴图作为 LatLong 2D 纹理图像,我想将其转换为立方体贴图。为此,我将 HDR 贴图加载为 2D 浮动纹理,将其投影到立方体上,然后从 6 个不同方向渲染该立方体内的场景,直接用glFramebufferTexture2D
相应的立方体贴图面作为函数的纹理目标填充立方体贴图。
生成的立方体贴图是一个浮点立方体贴图,生成如下:
请注意,类型参数GL_FLOAT
应该正确地接受 HDR 值。使用以下方式加载 HDR 图像stb_image.h
:
我还尝试遍历这个数组并检索最大浮点值以查看 HDR 是否正确加载,并且我当前 HDR 贴图的最高浮点值 288
远高于1.0
我的预期。
这是事情变得棘手的地方,根据输入纹理(HDR 浮点贴图)和输出立方体贴图(作为浮点数),我希望立方体贴图面被正确地视为浮点纹理并直接复制 HDR 值。但是,当我添加色调映射(带有可变曝光)时,立方体贴图显示为 LDR,我得到了很多条带,并且我显然缺少 HDR 的精度,如下图所示(曝光约为 7.5)
我不确定我是否遗漏了一些东西,而且我在 OpenGL 的文档中找不到太多关于直接渲染到浮点帧缓冲区的信息;我认为这是可能的,因为如果不是这样就没有意义。
为了完整起见,这里是从 LatLong 图像生成立方体贴图的相关代码(renderCustomCommand
使用适当的采样器设置渲染立方体):
这是对 LatLong 2D 图像进行采样的代码 -> 立方体:
请注意,LatLong 到 Cubemap 的转换进行得很好,因为 2D 环境在立方体贴图上正确渲染,但在渲染为天空盒的那一刻被简单地限制在 [0,1] 范围内,就好像在过程中的某个地方它失去了浮动点数据。
我已经被这个问题困住了一段时间,并希望你们中的任何人都可以有所了解(甚至可以像这样直接渲染到浮动立方体贴图吗?)。谢谢你。
编辑:这是来自 Photoshop 的具有高曝光设置的同一张图片,因为您可以看到出现了很多我在渲染器中丢失的细节。
c# - Convert Texture2D to EXR (HDRI)
I am looking for a way to convert Texture2D
directly to EXR format in byte array. I've done few research and this seems to be complicated than I thought.
Not really looking for a code since I don't have one. Just a suggestion on how to do this.
preview - 视频 HDR 是否仅影响预览或捕获的图像?
AVCaptureDevice 有一个名为isVideoHDREnabled的属性。它只影响预览,还是影响捕获的图像?文档没有说。
如果 iOS 确定对正在拍摄的场景有保证,我希望我的应用程序自动拍摄 HDR 图像。在支持时启用它有什么缺点吗?
我了解并非所有设备/相机组合都支持此功能。问题是当它存在时它会做什么。
javascript - 将帧缓冲区下载为 HDR
在 HTML5 画布 2d 上下文中,该方法toDataURL
允许将画布的内容下载为图像,颜色值从 0 到 255。
为了在 webgl 上下文中做同样的事情,我想一个简单的方法是readPixels
在 2d 画布中使用和复制生成的缓冲区值,然后使用前面的方法下载结果,颜色值仍然从 0 到 255。这意味着,具有更大范围的值将被限制。
那么,如果我们希望图像是浮点格式的 HDR 怎么办?
这个 SO question详细说明了如何从渲染目标读取浮点值,但是我们可以如何处理结果Float32Array
将其转换为 HDR 并下载它?
c# - 32位浮点图像格式getpixel?
如何在 C# 中使用 32 位浮点图像?
我更喜欢使用 openExr 但是,tiff 或类似的也可以,基本上我只想从磁盘加载一个 32 位浮点(每像素/通道 32 位)图像并获取单个通道的像素值并将其放入数组,最好是尽可能简单的解决方案。
代码:C#
three.js - 如何在 MeshStandardMaterial 中使用各向异性?
我使用这个例子在场景中添加球体,我只设置了 EnvMap 到球体并删除了所有其他贴图(贴图、法线贴图、粗糙度、金属度)。我看到了各向异性问题。所有网格都带有矩形。
我试图为 envMap 设置各向异性。但现在我看到一些白色的坏像素。
我的问题是:-“如何为 HDR envMap 设置各向异性”?
更新
为了解决这个问题,我将四个空的 32x32 图像设置为 Map、NormalMap、RougnessMap 和 MetalnessMap 纹理。
python - 以时间单位查找网络摄像头的曝光持续时间?
我目前正在试验 HDR 捕捉,并通过 Python 通过 OpenCV 使用 Logitech C920。迄今为止,我遇到的所有相机校准算法都需要图像曝光的实际持续时间,或者至少需要知道不同曝光时间之间的比率。不幸的是,当我在 OpenCV (CAM_PROP_EXPOSURE) 中为 C920 设置曝光时间时,我所拥有的只是一个整数范围 [-11 到 -2],没有单位指示。
是否有一个低级别的 API 或实用程序可以用来探测相机以找到相应的持续时间(以秒为单位)?
python - 如何使用 numpy 快速迭代和修改像素数组?
首先,我对 Python 及其库比较陌生。
以下代码的目的是将 HDR 图像转换为 RGBM,详见WebGL Insights 第 16 章。
该代码工作并产生正确的结果,但它的速度非常慢。这当然是由在 python 中分别迭代每个像素引起的,对于较大的图像可能需要很长时间(对于 3200x1600 大小的图像大约需要 4:30 分钟)。
我的问题是:有没有更有效的方法来实现我所追求的?我简要研究了 numpy 中的矢量化和广播,但还没有找到一种方法将它们应用于我的问题。
编辑:
感谢Mateen Ulhaq,我找到了一个解决方案:
这只需几秒钟即可完成。
camera - 如何基于 HAL3 进行 HDR 捕捉?
我想基于 HAL3 进行 HDR 捕捉,但我现在有两个问题。问题 1:我们知道 HDR 需要对三张图像进行快照。它可以通过发送三个捕获请求来实现,但我认为这不是一个好主意。那么你知道如何解决这个问题吗?问题2:HDR对三张图的曝光时间要求不同,一张要短曝光,一张要中曝光,最后一张要长曝光。我想知道如何达到这个效果。
如果你对 HAL3 中的 android camera 有一些经验,或者你有一些示例代码,你能告诉我吗?我在这方面困扰了很长时间。非常感谢!
hdr - 无法使用 OpenEXR 写入 Z 通道
我正在尝试以下官方文档中的读/写示例:
ReadingAndWritingImageFiles.pdf
但我无法写入 Z 通道。在 exrdisplay(官方 EXR 查看器)中,即使曝光最大,图像也是全黑的。
如果我用“R”替换“Z”,那么我可以使用 exrdisplay 看到带红色的图像。