问题标签 [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.

0 投票
1 回答
3545 浏览

silverlight - 用于减去背景图像的 HLSL 着色器

我正在尝试让 Silverlight 的 HLSL 像素着色器工作以从视频图像中减去背景图像。谁能建议一个比我使用的更复杂的算法,因为我的算法没有正确执行?

要查看此示例,您需要一台带网络摄像头的计算机:

  1. 转到页面http://xmldocs.net/alphavideo/background.html
  2. 按[开始录制]。
  3. 将您的身体移出场景,然后按 [捕获背景]。
  4. 然后将您的身体移回场景中并使用滑块将 Toleance 值调整到着色器。
0 投票
1 回答
3075 浏览

graphics - 你如何计算 HLSL 中的寄存器?

使用着色器模型 2.0,您可以拥有 256 个常量寄存器。我一直在研究各种着色器,并试图弄清楚什么是单个寄存器?

例如,在我的实例着色器中,我在函数外部的顶部声明了以下变量:

我消耗了多少寄存器?我如何计算它们?

0 投票
1 回答
1915 浏览

c# - Reflection.Emit 中的短格式操作码错误

我正在制作一种与像素着色器非常相似hlsl但仅支持像素着色器的小语言。该语言用于reflection.emit构建实现相同功能的 .NET 程序集。我目前正在测试分支指令的实现,if并且在我的一个单元测试(if带有内部if/elses 的大)中失败并显示以下错误消息:

System.NotSupportedException:位置非法的一字节分支:32。请求的分支是:132。

我已经将问题追溯到在我的案例中使用短格式指令OpCodes.Br_S。解决方案很简单,我已经替换OpCodes.Br_SOpCodes.Br但是我对此解决方案有几个问题:

这个解决方案对生成代码的性能有影响吗?

如果我想正确生成Br_S单字节和Br其他情况,我该怎么做?这里的问题是我正在使用访问者模式并且对于像if我必须输出BrBr_s首先输出的分支指令,那时,我无法知道剩余的代码是否需要超过一个字节才能跳转到标签。为了更好地说明我的问题,这是我为以下语句生成的代码:

我的语言:

伊利诺伊:

在这种情况下,我使用两个简短的指令ble.s并像 .NET 编译器一样br.s实现s。if但是 .NET 编译器可以根据情况进行选择br.sbr我的问题是我该如何做类似的事情?

Tnks

0 投票
1 回答
3734 浏览

directx - HLSL:在结构中使用数组

我遇到了一个奇怪的 HLSL 行为。我正在尝试使用包含在结构中的数组,如下所示(像素着色器代码):

该代码在逻辑上没有意义,它只是一个示例。问题是当我尝试编译这段代码时,我得到以下错误(第 25 行是 for-loop 行):

(25,7):错误 X3511:强制展开循环,但展开失败。

但是,当我将数组放在结构之外(只需float a[17]在 中声明shMain),一切都按预期工作。

我的问题是,为什么 DirectX 在使用结构时试图展开(不可滚动的)for 循环?这是记录在案的行为吗?除了将数组放在结构之外,还有其他可用的解决方法吗?

我从 2010 年 6 月开始使用着色器模型 4.0、DirectX 10 SDK。

编辑: 为澄清起见,我正在添加工作代码,它仅用Something普通数组替换结构的使用:

此代码按预期编译和工作。即使我[loop]在 for 循环前面添加属性,它也可以工作,这意味着它没有展开(这是正确的行为)。

0 投票
1 回答
325 浏览

wpf - wpf 支持除 TEXCOORD 以外的任何着色器输入

我知道您可以将常量寄存器绑定到依赖属性以及将画笔绑定到采样器,但是我看到的每个 wpf 着色器示例都使用声明

主要(float2 uv:TEXCOORD):颜色

我是 HLSL 的新手,但我知道除了 TEXCOORD 之外还有其他语义。它们中的任何一个都可以与 WPF 着色器一起使用吗?

同样,除了语义 COLOR 之外,还有其他可以使用的有效返回吗?

或者语义只是对用户的“提醒”,WPF 将运行它接收到的任何着色器,就好像它有 TEXCOORD 输入和 COLOR 输出一样(并且会在 float4 或 struct 输入上阻塞)?

0 投票
1 回答
3236 浏览

c# - 从 XNA 中的文件动态编译和运行着色器

我想知道是否可以从文件动态编译像素着色器并将其应用于网格。

首先,我将从一些背景信息开始。我有一个基于一系列数据创建 HLSL 像素着色器的系统,这对问题并不重要。重要的是这些着色器不使用技术或通道。因为它们不打算用作 .fx 文件。

ShaderCompiler.CompileFromFile()方法能够成功地将文件编译成CompiledShader.

是否可以将此着色器应用于网格?

因为我不想找到每个文件的入口点以将其包装在一种技术中以允许将其编译为Effect.

0 投票
1 回答
677 浏览

graphics - 获取最小和最大渲染 UV 值 (Direct3D)

我需要计算分配给从某个角度在屏幕上绘制给定对象时产生的像素的最小和最大 UV 值。例如,如果我有一个 UV 映射立方体,但只有正面可见,则 min(UV) 和 max(UV) 应设置为分配给可见面像素的最小和最大 UV 坐标。

我想使用 Direct3D 9 着色器(以及可能的最低着色器模型)来加快处理速度。顶点着色器可以像获取每个输入顶点的 UV 坐标并将它们未经修改地传递给像素着色器一样简单。另一方面,像素着色器必须采用顶点着色器产生的值并使用这些值来计算最小和最大 UV 值。

我想知道的是:

  1. 如何在像素着色器的调用之间保持状态(当前最小值和最大值)?
  2. 如何将着色器生成的最终最小值和最大值放入我的程序中?

有没有办法在 HLSL 中做到这一点,还是我坚持手工做?如果 HLSL 不起作用,那么在不使用着色器的情况下最有效的方法是什么?

0 投票
3 回答
1479 浏览

graphics - HLSL 半透明塑料着色器

我正在尝试制作一个着色器来复制一个内部带有彩色光的白色塑料物体。要么通过一个半透明的着色器,如果我在物体内部放一盏灯,光线就会透过,或者通过一个着色器来伪造内部灯光的效果。

我想要的效果有点像穿过灯罩的光,类似于这些图片:

替代文字 替代文字 替代文字

理想情况下,我将能够控制光的强度和颜色,使其在一些漂亮明亮的荧光色中产生脉冲和旋转

虽然我不知道从哪里开始!

我的问题是,是否有人知道我应该研究哪些技术才能生成这样的着色器,或者有一个相同/相似着色器的示例可以用作起点?或者即使您想提供一个可以完成这项工作的着色器

0 投票
2 回答
1006 浏览

silverlight - 用于获得圆柱效果的 HLSL

我需要使用 Silverlight 4 编写一个应用程序,并且需要显示像包裹在圆柱体上的图像。我需要一些 HLSL 代码,因为我不会使用 Silverlight 的效果来做到这一点。
我不会对 Silverlight 的 3D 库这样做。我只需要 HLSL 代码来更改像素。
我需要让我的图像看起来像这样 替代文字
谢谢。

0 投票
2 回答
10307 浏览

directx - HLSL 中的渲染深度

嗨,伙计们,这应该是一件容易的事,但由于某种原因,我没有解决...

我只想使用着色器来可视化场景中的深度:

为了获得深度值(或者我认为),我计算了世界空间中的位置与视图位置之间的距离。

以及对应的像素着色器

结果是白色

所以我开始试错将一个值乘以深度:

根据与物体的距离,它给出了令人满意的结果。因此,如果我靠近对象,我将不得不再次调整该值。

所以有什么非常不对劲的...

谢谢阅读!