问题标签 [pixel-shader]
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.
xna-4.0 - 可以从 XNA 4.0 中的 Pixel Shader 更改像素的位置吗?
我需要更改每个像素的位置:例如。(33,30) -> (40,55) 等等。可以在 XNA 4.0 的 Pixel Shader 中完成吗?
directx - 好像我的像素着色器没有被调用
我一直在搞乱 DirectX,而且我一直在研究我的这个奇怪的想法已经有一段时间了。似乎我的像素着色器由于某种奇怪的原因没有被调用。我不知道这是否可能,或者这是我的一些愚蠢的错误。代码如下(我从教程中复制了大部分内容。)
着色器(HLSL)代码如下:
DirectX 初始化和渲染代码如下:
什么都没有在屏幕上渲染,我应该看到点或一个大的白色补丁,但我看到的只是渲染目标已清除。我一直在运行 Pix,PreVS 和 PostVS 转换看起来不错。请帮忙!
xna - xna 4.0 精灵 + MRT + 像素着色器
我正在尝试组合 2 个渲染目标,颜色和法线,用于漫反射闪电并在屏幕上渲染结果。这个想法是使用具有仅包含像素着色器的效果的精灵来组合来自纹理的渲染目标。XNA 代码:
由于某种原因, spriteBatch.Draw() 中使用的渲染目标会影响结果。
像素着色器:
两个渲染目标中的 alpha 值始终为 1。将顶点着色器添加到效果会导致黑色。使用 spriteBatch.Draw() 绘制一个没有任何效果的渲染目标表明每个渲染目标的内容都很好。我无法理解这一点。有任何想法吗?
directx-11 - 在directx 11中一次渲染到多个纹理
我正在尝试使用 C++ directx 11 SDK 一次性渲染两个纹理。我想要一个纹理包含结果图像的每个像素的颜色(我通常在渲染 3D 场景时在屏幕上看到的颜色),另一个纹理包含每个像素和深度的法线(3 个浮点表示正常,1 个浮点表示深度)。现在,我能想到的是创建两个渲染目标,并将第一遍渲染为颜色,第二遍将法线和深度分别传递给每个渲染目标。但是,这似乎是在浪费时间,因为我可以在第一遍中获得每个像素的颜色、法线和深度的信息。那么有没有办法用像素着色器以某种方式输出两个纹理?
任何帮助,将不胜感激。
PS我正在考虑像素着色器中的RWTexture2D或RWStructuredBuffer。一点背景知识:我需要这两个图像在计算着色器中进行进一步处理。这带来了同步的一个附带问题:由于像素着色器(与计算着色器不同)一次写入每个像素,我怎么知道像素着色器何时完成并告诉计算着色器开始图像后处理?
directx - 编写非常简单的 HLSL 像素着色器时出错
我正在编写我的 SlimDX 应用程序来测试人类视觉系统的颜色对比敏感度阈值。受试者被呈现一个与背景对比度低的大字母,并要求识别该字母。但是,我需要能够显示更多颜色,然后可以使用简单的每通道 8 位颜色深度。(即 RGB 值 0-255)。我计划实现这一点的方法是通过一个简单的“抖动”算法实现为 HLSL 像素着色器。基本上,如果请求 slimDX 将文本渲染到颜色为 Color4( 0.55f, 0.55f, 0.55f ) 的表面,该颜色对应于 ( 140.25 , 140.25 , 140.25 ) 的 rgb 值,我希望每个像素的每个颜色通道都有有 25% 的机会设置为 141,有 75% 的机会设置为 140。
但是,在尝试使用 fxc 进行编译时,我的原型着色器代码出现错误。我在编译时得到一个非法字符代码,我不知道为什么。另外,如果您是 HLSL 专家,请查看我的代码并发表任何让您印象深刻的评论。注意我从这个问题的答案中得到了 HLSL 随机函数。
我可以在像素着色器中生成一个随机数吗?
下面是我的着色器代码。如果我的第一个 HLSL 代码有很多错误,请原谅我:
编辑: 在下面的答案的帮助下,我离解决方案有点近了,但仍然遇到一些问题。我接受了 catflier 的评论,即我借用的随机函数是用 GLSL 而不是 HLSL 编写的。我不得不将 vec2 更改为 float2 并将随机函数放在顶部。除此之外,我还必须编写一个 mod 函数,因为 GLSL mod() != HLSL fmod。并且 GLSL fract() 已更改为 HLSL frac()。我还有一个问题,我的文本文件是用 UTF-8 编码的,我猜这会导致 fxc 出现一些问题。重新编码为 ANSI 后,我能够得到一些更好的错误消息。但是,我仍然遇到一些问题。
我尝试使用fxc /Zi /E DitherByChance DitherByChance.fx
以及编译,fxc /Zi /E DitherByChance /LD DitherByChance.fx
因为我的目标是DX9,但我两次都出现以下错误:
undeclared indentifier 's0' error
从这条线float4 oldColor = tex2D(s0, coords);
我不确定这个 s0 参数到底是什么,我刚刚在另一个着色器示例中看到了它。我看到另一个例子,有人声明了一个 Global sampler2D 变量并使用它而不是 s0 所以我尝试了这个:
但是现在当我运行时fxc /Zi /E DitherByChance /LD DitherByChance.fx
出现以下错误:
vs_2_0 target does not support texture lookup
有任何想法吗?
position - 在像素着色器中计算世界空间坐标
我有一个像素着色器,我想根据我的世界空间坐标计算每个像素的位置。我该怎么做?我需要什么?
我有一个ps_input
具有 float4 位置的结构:SV_POSITION
。我假设这很重要,但存储在其中的值似乎有点有趣。
我似乎无法弄清楚它们与什么有关。例如,如果一个像素是 2d 的,那么它怎么会有 aw 分量或 az 分量呢?
我正在使用DirectX
并且像素着色器位于HLSL
. C++
作为我在 CPU 上的编程语言。
任何帮助,将不胜感激。
xna-4.0 - 试图使高斯模糊更强/更模糊 - XNA 4.0 HLSL
我正在尝试在 Texture2D 上实现高斯模糊,并且在尝试找到任何好的教程等时遇到了麻烦。
我终于设法找到了一段很好的一次性示例代码,它明显地模糊了图像一点点,但我希望能够随着时间的推移使它变得更模糊和更少模糊,我不太了解高斯模糊如何实现这一点。
我想这一定与 PixelKernel 和 BlurWeights 有关,但我真的不知道这些值的用途/改变它们的作用。
所以我的问题基本上是:
这是在 HLSL/XNA 中进行高斯模糊的好方法吗?如果是这样,我如何使场景更模糊?作为额外的奖励,您能否指出我对高斯模糊在着色器上下文中如何工作的一个很好的解释?
谢谢你的时间,
TS
附言
刚刚意识到我应该包括代码:
texture2d - 我可以在像素着色器中创建切片引擎吗?
我正在尝试使用像素着色器和两个纹理创建一个平铺引擎。一种纹理将保存图块集,另一种用于保存地图。
是否可以将纹理数据作为实际(未采样)数据读取,以便我可以从地图中提取索引?
读取该像素数据的最佳方法是什么?
我只尝试了 text2D ,但这还有一些不足之处(老实说,我对像素着色器有点陌生)。
基本上,我需要一种从地图纹理中的特定像素读取实际数据并将其用作平铺纹理的整数索引的方法。假设我已经设法创建并将适当的纹理传递给着色器。
有什么想法吗?
(使用 monogame 进行地铁所以 dx 级别 9_1)
c# - 如何从 Unity 3d shaderlab 中的像素着色器返回纹理?
如何创建一个简单的像素颜色着色器,说它需要一个纹理,应用类似遮罩的东西:
in 并返回一个纹理,该纹理可以从 c# 代码以类似的方式传递给下一个着色器mats[1].SetTexture("_MainTex", mats[0].GetTexture("_MainTex"));
?
2d - WP8 带像素着色器的图像处理
有没有办法在 XAML 应用程序中执行此操作?