问题标签 [hlsl]
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# - HLSL 计算 - 按顺序处理像素?
想象一下,我想使用 GPU 计算斐波那契数列的前一百万项。(我意识到这将超过 32 位数据类型的精度限制 - 仅用作示例)
给定一个具有 40 个着色器/流处理器的 GPU,并使用参考书作弊,我可以将百万项分解为 40 个 250,000 个条带的块,并为每个着色器设置两个起始值:
单位 0:1,1(然后计算 2,3,5,8,blah blah blah)
单元 1:第 250,000 个学期
单元 2:第 500,000 个学期
...
如果可能的话,我怎样才能确保像素按顺序处理?如果输入纹理中的前几个像素有值(为简单起见,使用 RGBA)
如何确保在前四项准备好之前不尝试计算第五项?
我意识到这可以在多次传递中完成,但在计算值时设置一个“就绪”位,但这似乎非常低效,并且有点消除了在 GPU 上执行此类计算的好处。
OpenCL/CUDA/etc 可能提供了很好的方法来做到这一点,但我正在尝试(为了我自己的启发)让它与 XNA/HLSL 一起工作。
链接或示例表示赞赏。
更新/简化
是否可以编写一个使用一个像素的值来影响相邻像素的值的着色器?
opengl - GLSL 动态索引数组
我一直在使用 DirectX(带有 XNA)一段时间,最近切换到了 OpenGL。我真的很喜欢它,但有一件事让我很生气。
我一直在尝试在顶点着色器中实现需要动态索引的东西,但有人告诉我这需要 SM 4.0 的等价物。但是我知道即使使用 SM 2.0,甚至可能是 1.0,这也适用于 DX。XNA 的实例化示例使用它在仅限 SM2.0 的卡上进行实例化http://create.msdn.com/en-US/education/catalog/sample/mesh_instancing。
编译器不可能将它“展开”成一个巨大的 if 语句列表,因为这肯定会超过 SM2 的 250 个实例的指令限制。
那么,DX 是不是做了一些我用 OpenGL 做不到的诡计,我可以操纵 OpenGL 做同样的事情,还是它是 OpenGL 不公开的硬件功能?
glsl - 着色器帧缓冲区回读
我想知道较新的着色器模型是否支持从目标帧缓冲区读回像素值。我假设这已经在绘图管道的后期(非可编程)阶段完成,这让我希望这个功能可能已经添加到可编程管道中。
我知道可以绘制到纹理绑定帧缓冲区,然后将此纹理发送到着色器,我只是希望有一种更优雅的方式来实现相同的功能。
linq - 尝试实现 LINQ to HLSL 提供程序。有没有好的 HLSL 教程?特别是那些专注于语法的
是否有任何针对 HLSL 的好的教程,特别是对语法给出很好解释的教程?当我看到显示寄存器(s0)和显示tex0的样本时,我傻眼了,这些总是一样的吗?MSDN 文档读起来像一本手册,并不容易理解。
我是 HLSL 的绝对初学者,我正在尝试为 HLSL(详细信息)实现一个自定义 LINQ 提供程序,到目前为止,它可以工作,但我确信它在大多数情况下都会失败。
我的 Linq 提供程序应该将 LINQ 查询转换为 HLSL 并编译它。给定这个查询(这个着色器从三个图像中创建一个 HDR 图像):
应该导致这个 HLSL 着色器:
我现在遇到的问题主要是语义,尤其是价值语义(我没有找到很多使用它们的例子)。现实世界的例子也会很有帮助。我不确定那里使用了哪种着色器。
c++ - 顶点着色器输入顺序
SM 4.0 顶点着色器的输入顺序是否重要?
例如是
相当于
c# - 闪烁网格问题:DirectX HLSL
问题:我在 Managed DirectX 9 中使用 HLSL (高级着色器语言)渲染网格。根据网格的复杂性(顶点和面的数量),我有时会遇到闪烁问题。
显然,复杂度较高的网格应该需要更长的时间来渲染,并且闪烁的量随着网格的复杂度而增加。但是,发生的情况是网格根本没有渲染,并且绘制网格所需的时间显着降低。
Increased Mesh Complexity -> Increased Flickering
代码:
结果:这是我得到的输出(为了便于阅读,我插入了上面代码中未包含的计时器):
HLSL 代码:这是缩写的HLSL 代码,请注意这不是实际代码,所以不要挖掘语法错误,我向您保证实际代码非常相似。
任何帮助/想法/建议将不胜感激。谢谢!
directx - 用于 fx/hlsl 着色器的下拉 UI 小部件
我制作了一个 HLSL 着色器(fx 格式),并希望在其 UI 中添加一个枚举/列表参数 - 作为布尔标志列表的更好替代方案。
所以而不是:
- [x]“使用自定义地图”
- [x] “使用自定义地图 alpha”
- [x]“使用漫反射阿尔法”
- [x] “使用高光 alpha”
- [x] “使用正常的 alpha”
有:
- 来源:[“使用自定义地图”]
包含所有 5 个选项以及代码级别上所选项目的索引。
“DirectX 标准注释和语义参考”提到了 ListPicker 小部件,但我找不到任何示例或说明如何使用它。
问题是:
- 是否可以在着色器的 UI 中有一个自定义的类似下拉菜单的小部件?
- 如何实现?
algorithm - DirectX11 和 packetoffset
有谁知道如何在 DirectX10/11 中使用带有 bool 类型的“packetoffset”?我不确定这应该如何对齐
silverlight - HLSL色相变化算法
我想为 Silverlight 制作一个像素着色器,这将帮助我使用滑块更改色相/饱和度/亮度。* 色相滑块的值范围:[-180, 180] * 饱和度滑块的值范围:[-100, 100] * 亮度滑块的值范围:[-100, 100]
我设法创建了一个可以操纵饱和度和亮度值的像素着色器。但我可以找到任何改变色调值的算法。谁能给我一个算法?谢谢你。
这是我的 HLSL 代码:
xna - XNA - 顶点流?
有人会提供/指向我关于在 HLSL 和 XNA 中使用多个顶点流的解释或教程吗?我对 GPU 如何存储/访问它们、自定义着色器中流的优势或用途等感兴趣。
我已经看到了一些关于将多个顶点流用于实例化几何的示例,但是我很难理解底层机制。
更新
如果我有一个接受两个参数的顶点着色器(借自本教程)
从示例看来,我从中提取了这个instanceTransform
并input
从单独的流中提取。但是,在这种情况下,input
流是一个包含六个顶点的列表,并且instanceTransform
来自一个包含大量元素的流,其中包括平移矩阵。这应该用于实例化几何体。
我对这个着色器执行了多少次感到困惑——它是 VertexBuffer0.VertexCount*VertexBuffer1.VertexCount 吗?这种事情的问题在于,一旦有人弄清楚了,他们就不会费心向社区贡献一份写得很好的文档来详细说明他们的发现。
啊。