问题标签 [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.
compiler-construction - HLSL 编译器错误?
这是我的像素着色器的一部分。为什么会出现编译器错误?我在ps_3_0.
没有mul()
它编译的情况下编译它。
math - 矩阵乘法 - 视图/投影、世界/投影等
在 HLSL 中有很多矩阵乘法,虽然我了解如何以及在何处使用它们,但我不确定它们是如何得出的或它们的实际目标是什么。
所以我想知道是否有在线资源可以解释这一点,我特别好奇将世界矩阵乘以视图矩阵和将世界+视图矩阵乘以投影矩阵的目的是什么。
directx - 所有不同的 HLSL 采样器类型有什么用途?
我目前正在使用 DX9/SM3,关于HLSL 采样器的 MSDN 文档似乎非常缺乏解释如何使用不同的采样器类型。更糟糕的是,他们试图在一篇文章中涵盖 DX9 和 DX10,所以他们将所有关键词混在一起:
采样器名称= SamplerType { Texture = < texture_variable >; [ state_name = state_value ;] ... };
...
采样器类型
[在] 采样器类型,它是以下之一:sampler、sampler1D、sampler2D、sampler3D、samplerCUBE、sampler_state、SamplerState。
Direct3D 9 和 Direct3D 10 之间的区别:
Direct3D 10 支持一种额外的采样器类型:SamplerComparisonState。
我觉得与这篇文章相反,SamplerState
只有 DX10。我看到的几乎所有代码都sampler_state
用于SamplerType。BasicHLSL (DX9) 中的一个简单示例:
为什么所有不同的 _SamplerType_s 都存在,你什么时候使用,比如说,sampler
或者sampler2D
代替sampler_state
?无论如何,您在获取时都需要明确,例如tex2D
, texCUBE
,那么这里发生了什么?
directx - HLSL 循环/采样问题
我有一段 HLSL 代码,如下所示:
我得到的结果与只执行一次的循环一致。我检查了 PIX 中的着色器,事情变得更加奇怪,指示代码中位置的黄色箭头进入循环,穿过它一次,然后跳回到起点,此时黄色箭头不再移动,但光标遍历代码并返回结果(PIX 中的一个错误,或者我只是使用错误?)
我怀疑这可能与纹理读取被编译器移出循环有关,但是我认为 tex2Dlod 不会发生这种情况,因为我手动设置了 LOD:/
所以:
1)有什么问题?
2)任何建议的解决方案?
directx - 从 CPU 上的几何着色器读取输出
我正在尝试从使用流输出输出到缓冲区的几何着色器中读取输出。
几何着色器使用的输出缓冲区描述如下:
几何着色器基于单个点创建多个三角形(每个点最多 12 个三角形),如果我正确理解 SDK,我必须创建一个暂存资源,以便从 CPU 上的几何着色器读取输出。
我已经声明了另一个缓冲区资源(这次设置了 STAGING 标志),如下所示:
在应用程序的第一次绘制调用之后,几何着色器完成创建所有三角形并且可以绘制。但是,在第一次绘制调用之后,我希望能够读取几何着色器输出的顶点。
使用缓冲区暂存资源我试图这样做(在第一次绘制调用之后):
这会编译并且在运行时不会给出任何错误。但是,我似乎没有得到任何输出。
几何着色器输出以下内容:
并且 VERTEX_STREAMOUT 声明如下:
我在这里错过了什么吗?
flash - Pixel Bender(Flash 中)和 Pixel Shaders(Silverlight 中)的比较
有人能解释一下 Flash 中的 Pixel Bender 和 Silverlight 中的 Pixel Shader (HLSL) 在编程灵活性和运行时性能方面的区别吗?
shader - HLSL 像素着色器 - 更改特定色调的图像颜色
我想编写一个像素着色器,它采用输入图像,并将一个色调范围(即 HSV)的所有颜色转换为另一个色调范围。
我的动机很简单:我想为一堆不同的纹理上色,但我不想为整个纹理上色,只是在特定范围内具有色调的部分。这样,我可以绘制一张赛车的图像,然后使用像素着色器仅更改汽车上的条纹和徽标的颜色。
我在网上查看了 HLSL 文档,找不到任何可以处理色调的东西。是否有在线可用的 HLSL 代码库?
这是我要完成的一些伪代码:
如果该信息对任何人都很重要,我正在与 XNA Game Studio 合作。
directx - 给定世界空间中的法线贴图,找到边缘的合适算法是什么?
如果我将正常场景的顶点法线显示为世界空间中纹理中的颜色,是否有一种方法可以有效地计算边缘,或者在数学上是不可能的?我知道如果您在视图空间中有法线,则可以计算边缘,但我不确定如果您在世界空间中有法线,是否可以这样做(我一直试图找出过去的方法小时..)
我将 DirectX 与 HLSL 一起使用。
c++ - 从 [0.5 - 1] 规范化到 [0 - 1]
我有点卡在这里,我想这有点脑筋急转弯。如果我的数字在 0.5 到 1 之间,如何将其标准化为 0 到 1 之间?
感谢您的帮助,也许我只是有点慢,因为我过去 24 小时一直在工作 O_O
directx - 调试directx像素/顶点着色器?
我试图弄清楚如何在 DirectX 中调试像素和顶点着色器,我尝试过使用 Pix for Windows,但发现它有很多错误并且实际上无法操作。是否有替代方法可以让我在自己的应用程序中调试这些着色器?