首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >HLSL中的3D缓冲区?

HLSL中的3D缓冲区?
EN

Stack Overflow用户
提问于 2016-11-17 22:10:39
回答 2查看 1.5K关注 0票数 0

我想把一系列的整数以3D数组的形式用统一的形式发送到HLSL。我已经试着做了几天了,但没有任何收获。我试图将缓冲区打包到另一个(StructuredBuffer<StructuredBuffer<StructuredBuffer<int>>>)中,但它根本无法工作。我需要使这个东西可调整大小,所以我不能在structs中使用数组。我该怎么办?

编辑:为了进一步澄清我在这里要做的事情,这是一个医疗项目。当你对身体进行扫描时,会生成一些文件。这些文件称为DICOM文件(.dcm)。这些文件被分发给了医生。医生应该打开程序,选择所有的DICOM文件并加载它们。每个DICOM文件都包含一个图像。然而,这些图像并不是我们日常生活中使用的正常图像。这些图像是灰度的,每个像素的值在-1000到几千之间,因此每个像素被保存为2个字节(或一个Int16)。我需要生成被扫描的身体的三维模型,所以我使用Marching多维数据集算法来生成它(请看一下标量场的多边形化)。问题是我经常在360 512*512大小的图像中循环每个像素,这花费了太多的时间。当我使用CPU时,我常常在需要时从每个文件中读取像素数据。现在,我正在尝试使这个过程在运行时发生。在处理之前,我需要将所有像素数据发送到GPU。这是我的问题。我需要GPU从磁盘读取数据。因为这是不可能的,我需要以Ints的3D数组的形式向GPU发送360*512*512*4字节的数据。我还计划将数据保存在那里,以避免大量内存的重新传输。我该怎么办?请参阅此链接,以了解更多关于我正在做什么的信息

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-21 05:04:08

根据我所理解的,我建议尝试以下几种方法:

  1. 夷平数据(嵌套缓冲区不是gpu上想要的)
  2. 如果有必要,可以将数据拆分到多个ComputeBuffers (当我在Nvidia上使用它们时,每个缓冲区可以存储大约1GB的数据。我用1.5GB的数据渲染了一个3D点云,你提到的360 360MBytes的数据不应该是问题)
  3. 如果您需要多个缓冲区:根据您的行进立方体算法的需要,让它们重叠。
  4. ComputeShader中进行所有计算(我认为需要DX11,如果有多个缓冲区,则运行多次并累积结果),然后在标准着色器中使用OnPostRender函数调用的结果(使用Graphics.DrawProcedural内部绘制点或在gpu上构建网格)

编辑(您可能感兴趣)

如果您想将数据附加到gpu缓冲区(因为您不知道确切的大小,或者不能立即将其写入gpu ),则可以使用AppendBuffersComputeShader

C#脚本片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct DataStruct
{
    ...
}

DataStruct[] yourData;
yourData = loadStuff();    

ComputeBuffer tmpBuffer = new ComputeBuffer(512, Marshal.SizeOf(typeof(DataStruct)));
ComputeBuffer gpuData = new ComputeBuffer(MAX_SIZE, Marshal.SizeOf(typeof(DataStruct)), ComputeBufferType.Append);

for (int i = 0; i < yourData.Length / 512; i++) {

    // write data subset to temporary buffer on gpu
    tmpBuffer.SetData(DataStruct.Skip(i*512).Take((i+1)*512).ToArray()); // Use fancy Linq stuff to select data subset

    // set up and run compute shader for appending data to "gpuData" buffer
    AppendComputeShader.SetBuffer(0, "inBuffer", tmpBuffer);
    AppendComputeShader.SetBuffer(0, "appendBuffer", gpuData);
    AppendComputeShader.Dispatch(0, 512/8, 1, 1); // 8 = gpu work group size -> use 512/8 work groups
}

ComputeShader:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct DataStruct // replicate struct in shader
{
    ...
}

#pragma kernel append
StructuredBuffer<DataStruct> inBuffer;
AppendStructuredBuffer<DataStruct> appendBuffer;

[numthreads(8,1,1)]
void append(int id: SV_DispatchThreadID) {
    appendBuffer.Append(inBuffer[id]);
}

注意:

  • AppendComputeShader必须通过检验员分配
  • 512是一个任意的批处理大小,有一个上限,您可以同时添加多少数据到gpu缓冲区,但我认为这取决于硬件(对我来说,它似乎是65536 *4字节)。
  • 您必须为gpu缓冲区提供最大大小(在泰坦X上,它似乎是~1GB)
票数 1
EN

Stack Overflow用户

发布于 2016-11-18 10:56:03

在团结中,我们目前有一个MaterialPropertyBlock,它允许SetMatrixArraySetVectorArray,为了使它更加甜美,我们可以使用static SetGlobalVectorArraySetGlobalMatrixArray进行全局设置。我相信这些会帮到你的。

如果您喜欢旧的方式,请查看这篇很好的文章演示如何传递向量数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40670427

复制
相关文章
cmd - bat文件如何关闭回显
echo是回显命令,会将echo后的内容输出到cmd窗口中,比如在一个Test.bat文件中输入如下命令:
雨临Lewis
2022/01/11
2.3K0
日常技巧-命令无回显实战Tips
https://weibell.github.io/reverse-shell-generator/#
hyyrent
2022/12/26
1.2K0
日常技巧-命令无回显实战Tips
SpringMVC【参数绑定、数据回显、文件上传】
前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定… 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用request对象、Model对象等等,其实是不是可以随便把参数写上去都行???其实并不是的… Controller方法默认支持的参数类型有4个,这4个足以支撑我们的日常开发了 HttpServletRequest HttpServletResponse
Java3y
2018/04/02
1.4K0
SpringMVC【参数绑定、数据回显、文件上传】
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/07/14
1.7K0
如何将 Linux 命令输出重定向到文件?
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/08/03
1.9K0
如何将 Linux 命令输出重定向到文件?
bootstrap fileinput 文件上传和回显「建议收藏」
官网下载文件http://plugins.krajee.com/file-input/demo
全栈程序员站长
2022/08/15
2.8K0
表单数据回显
  在数据提交出现错误的时候, 已填写的信息仍在文本框中, 比如用户登录, 当用户输入错误的密码之后, 用户名仍在文本框, 只是密码框清空
Twcat_tree
2022/11/30
1.2K0
表单数据回显
命令执行/SQL盲注无回显外带方式
在渗透测试中我们时常会遇到一些无回显的场景,如常见的:SQL盲注、命令执行、XSS、SSRF、Blind XXE等漏洞,这时就需要利用第三方dnslog/httplog平台才能将数据和命令执行结果外带出来。
潇湘信安
2022/09/14
2.4K0
命令执行/SQL盲注无回显外带方式
输入网址到回显页面,经历了哪些过程
浏览器第一步工作就是要对输入的URL进行解析,从而确定发送给Web服务器的请求信息。
shysh95
2021/12/27
1.2K0
输入网址到回显页面,经历了哪些过程
Python3 执行系统命令并获取实时回显
最近在改造一些打包的逻辑,原来在 Windows 下是基于批处理制作的,由于批处理用起来不是很方便,一些实时的计算基本无法胜任,所以转向 Python3。但在以前脚本的基础上很多是需要调用系统命令的比如 VS 编译一个项目,我们需要获取实时的回显知道编译的结果和进度。所以就有了以下方法:
我与梦想有个约会
2023/10/21
4580
执行Get-NetTCPConnection没有回显,但是执行netstat -ano有回显
问题:执行Get-NetTCPConnection没有回显,但是执行netstat -ano有回显,如下图
Windows技术交流
2023/09/12
2190
element级联选择器表单回显_级联选择器 数据回显
此方法主要参考这位大神:https://segmentfault.com/u/li…
全栈程序员站长
2022/08/04
1.2K0
模糊测试之攻击回显
描述:一个渗透安全工程师常常会在,某些安全测试项目中遇到,代码或者命令可以被执行,但是无任何的回显特征来判断攻击成功,
全栈工程师修炼指南
2022/09/28
2.4K0
模糊测试之攻击回显
技术分析|XXE环境搭建及实战 包含有回显无回显操作
搭建说明:安装xampp后,htdocs目录放入靶机项目,然后开启apache、mysql访问即可
陈殷
2020/03/06
2.6K0
JS 递归 数组嵌套回显
第一种: // 查询部门信息 seeBranch(data,id){ function find(data, fn, result) { data.forEach(item => { if(item.id===id){ result.push(item) }else if (item.children.length>0) { find(item.children, fn, result) } else { if (f
我不是费圆
2022/05/09
4K0
短信验证码回显
由于网站程序开发人员在设计验证码时为了方便使用,会选择将验证码回显在响应中,来判断用户输入的验证码是否和响应中的验证码一致,如果一致就会通过身份校验。攻击者可以通过拦截数据包等手段获取短信验证码值,根据短信验证码使用场景的不同,将会导致任意账户登录、任意密码重置、用户身份盗用等更多高危的风险产生。
LuckySec
2022/11/15
9K0
短信验证码回显
模糊测试之攻击回显
描述:一个渗透安全工程师常常会在,某些安全测试项目中遇到,代码或者命令可以被执行,但是无任何的回显特征来判断攻击成功,
全栈工程师修炼指南
2020/10/23
3.1K0
模糊测试之攻击回显
element ui toggleRowSelection 回显无效
组件初始加载时, 通过外部接口拉取需要设置的表格项数据. 通过表格实例方法toggleRowSelection 设置已选项无效.
copy_left
2022/09/30
1.4K0
Linux怎么复制文件到其他文件夹
本文主要讲解linux怎么复制文件到其他文件夹。 在Linux和Unix系统上工作时,复制文件和目录是您每天要执行的最常见任务之一。 cp是一个命令行实用程序,用于复制Unix和Linux系统上的文件和目录。在本文中,我们将解释如何使用cp命令。
狼啸风云
2021/04/13
15.7K0
利用DNS协议回显数据
这个问题已经是去年提出的了,之前也看到过,在 CTF 题目环境中利用过却对原理不慎了解,在公司大佬们的帮助下成功了理解了一波原理。
信安之路
2018/08/08
2.3K0
利用DNS协议回显数据

相似问题

无法从cordova Android应用程序访问图书馆资源

10

Android图书馆资源

22

访问图书馆资源的Android应用程序

10

如何读取"Android图书馆项目“中的资产资源

23

用Ant构建Android项目中的图书馆资源

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文