hlsl相关内容

将HLSL像素着色器应用于Win32屏幕截图

一个小背景:我正在尝试制作一个Windows(10)应用程序,使屏幕看起来像旧的CRT监视器、扫描线、模糊等等。我使用微软的这个官方screen capture demo作为起点:在这个阶段,我可以捕获一个窗口,并将其显示在一个新的鼠标直通窗口中,就像它是原始窗口一样。 我正在尝试使用CRT-Royale CRT shaders,它们通常被认为是最好的CRT着色器;它们以.cg格式提供。我用cg ..
发布时间:2022-03-11 19:42:31 C/C++开发

HLSL 获得圆柱效果

我需要用 Silverlight 4 编写一个应用程序,并且需要显示像包裹在圆柱体上的图像.我需要一些 HLSL 代码,因为我不会使用 Silverlight 的效果来做到这一点. 我不会对 Silverlight 的 3D 库这样做.我只需要更改像素的 HLSL 代码. 我需要我的图像看起来像 this 谢谢. 解决方案 这似乎是您想要的效果,您可能希望更改 0.2 值以增加或减少 ..
发布时间:2021-12-23 23:49:38 其他开发

我可以在像素着色器中生成一个随机数吗?

我正在尝试编写一个非常简单的着色器,为适用的对象添加随机闪光.我想这样做的方法是向像素着色器中的像素值添加随机的白色阴影 (R = G = B). 似乎 noise() 不像我希望的那样工作: float multiplier = noise(float3(Input.Position[0], Input.Position[1], time)); 它给我“错误 X4532:无法将表达式映 ..
发布时间:2021-12-21 16:07:57 其他开发

(如何)着色器可以查看当前的渲染缓冲区?

像素着色器是否有可能看到深度/颜色/模板缓冲区的当前状态? 解决方案 片段着色器未获得其正在处理的片段的当前缓冲区值.尝试通过将这些缓冲区用作纹理来读取这些值,在一般 情况下不会产生合理的结果.这是“未定义的行为". 在某些特定情况下它可以工作. 首先,您可以使用纹理障碍.这在技术上是 NVIDIA 的扩展,但 ATI 也广泛支持它.屏障基本上是缓存刷新.它允许您将当前渲染目标 ..
发布时间:2021-11-25 01:58:02 C#

如何计算像素着色器深度以将在点精灵上绘制的圆渲染为与其他对象相交的球体?

我正在编写一个着色器,通过绘制阴影圆圈来在点精灵上渲染球体,并且需要编写深度分量和颜色,以便彼此靠近的球体正确相交. 我使用的代码类似于 Johna Holwerda 编写的代码:> void PS_ShowDepth(VS_OUTPUT input, out float4 color: COLOR0,out float depth : DEPTH){float dist = length ..
发布时间:2021-11-25 01:21:38 C#

如何实现平滑的切线空间法线?

我正在尝试向我的应用程序添加凹凸贴图功能,但我得到了非常多面的模型: 发生这种情况的原因是因为我正在计算每个面的切线、副法线和法线,而完全忽略了我从模型文件中获得的法线. 计算目前使用三角形的两条边和纹理空间向量得到切线和副法线,然后通过叉积计算法线.模型加载后,这一切都在 CPU 上完成,然后将值存储为模型几何的一部分. vector1 = vertex2.coords - ve ..
发布时间:2021-11-25 00:33:32 C/C++开发

2D 瓷砖照明

我正在为基于 XNA 2D 磁贴的游戏添加光照. 我发现这篇文章很有用,但是它的完成方式不支持碰撞.我想要的是一种执行以下操作的方法 一直点亮的点 碰撞(如果光线击中一个方块,则将下一个方块调暗至暗以模拟阴影) 我已经搜索了很长时间但没有运气(我确实找到了 Catalin 的教程,但它对我来说似乎有点高级,并且由于为每个点重新绘制整个游戏而不适用于瓷砖) 解决方案 我将 ..
发布时间:2021-11-24 21:52:30 C#/.NET

Unity 着色器 (hlsl) 等效于 Vector3.ProjectOnPlane

在 Unity (hlsl) 的着色器中,我正在寻找一种方法,将向量(float3 或 float4)投影到给定平面法线方向的平面上.我需要的是相当于 Unity 的 Vector3.ProjectOnPlane 函数的东西:https://docs.unity3d.com/ScriptReference/Vector3.ProjectOnPlane.html 解决方案 如果你的平面法向量 ..
发布时间:2021-09-14 19:30:24 其他开发

Unity Shader-如何有效地重新着色特定坐标?

首先,请允许我解释一下我所拥有的,然后再讨论下一个要解决的问题. 我所拥有的 我有一个带纹理的自定义网格物体,它的某些边缘与Unity中的整数世界坐标完全对齐.在网格中,我添加了自己的粗略有效的自定义表面着色器,如下所示: 着色器"Custom/GridHighlightShader"{特性{[HideInInspector] _SelectionColor("SelectionCo ..
发布时间:2021-05-14 19:11:21 C#/.NET

D3D11:HLSL中可变数量的灯

我正在使用C ++和Direct3D11开发游戏引擎,现在我想向场景中添加可变数量的灯光.到目前为止,我设法添加并渲染了着色器程序中已知并已编码的简单灯光. 在shader.fx中: static const int LightsCount = 4;结构NF3D_LIGHT{//成员...};cbuffer Light:寄存器(b5){NF3D_LIGHT light [LightsCo ..
发布时间:2021-05-14 19:11:18 C/C++开发

NSight图形调试无法启动

我正在尝试使用NSight在VS2012中调试HLSL着色器,但无法启动. 当我单击“开始图形调试"时,似乎启动了应用程序片刻,然后将其关闭(NSight的输出窗口显示了几行“着色器已加载"/“着色器已卸载"行).Windows事件日志不显示任何内容("NVIDIA Network Service"无法启动,但据我所知,这与更新有关.) 另一方面,如果我开始进行GPU性能分析,那么它将 ..
发布时间:2021-04-30 20:24:12 其他开发

(如何)着色器可以查看当前的渲染缓冲区?

像素着色器是否可以查看深度/颜色/模板缓冲区的当前状态? 解决方案 没有为片段着色器提供其正在处理的片段的当前缓冲区值.尝试通过使用这些缓冲区作为纹理来读取这些值在 general 情况下不会产生合理的结果.这是“未定义的行为". 在某些特定的情况下它可以工作. 首先,您可以使用纹理屏障.从技术上讲,这是NVIDIA扩展,但是ATI也广泛支持它.屏障基本上是缓存刷新.它允许您将 ..
发布时间:2021-04-02 18:55:47 其他开发

XNA中的进度条着色器出现问题

我正在为XNA中的绘制进度条创建一个简单的着色器. 想法很简单:有两个纹理和值,如果X纹理坐标小于或等于值,则使用前景纹理中的像素,否则使用背景纹理. /* Variables */ texture BackgroundTexture; sampler2D BackgroundSampler = sampler_state { Texture = (BackgroundTex ..
发布时间:2020-11-23 18:50:12 C#/.NET

我可以通过某种方式将HLSL放入.lib吗?

我使用DirectX和C ++制作了一个精灵渲染器,我想将其放入.lib文件中. 是否可以通过某种方式将两个(编译的)着色器放入.lib,这样我就不必在所有地方都包含它们了?现在,我在运行时从磁盘读取了它们,这当然意味着我必须将这两个.cso文件放在某个位置以便可以读取它们. 我想出的解决方案是将它们作为字符串放入项目中,然后在运行时进行编译,但这并不方便... 解决方案 如何 ..
发布时间:2020-11-23 18:49:10 C/C++开发

二维水凹凸贴图-Monogame

感谢您抽出宝贵时间来检查我的问题. 在我第一次尝试游戏时,我正在努力改善海洋环境.我决定对我的海洋瓷砖使用凹凸贴图,以在水中添加一些纹理.为此,我将水瓦片绘制到renderTarget,然后在将渲染目标绘制到后缓冲区时应用像素着色器. 我遇到的问题是像素着色器似乎偏移或置换了绘制的渲染目标的位置.观察这两张照片: 此图像是不运行像素着色器的游戏.请注意,岛周围的"浅水"在此处是纯 ..
发布时间:2020-11-23 18:48:07 其他开发

HLSL整数纹理坐标

我正在尝试在整数像素坐标之间进行插值,而不是在0-1之间进行插值,因为我使用的是点采样,因此我对像素分数不感兴趣,但是纹理坐标仍在像素着色器中即使数据类型为int2,也仍为float2. pixelSize是1除以纹理大小 matrix WorldViewProjection; float2 pixelSize; Texture2D SpriteTexture; sampler2 ..
发布时间:2020-11-23 18:48:04 其他开发

为自定义ShaderEffect创建黑色滤镜

我正在使用此代码示例调整WPF应用程序在BitmapImage上的亮度和对比度. HLSL代码的相关位是这样的: sampler2D input : register(s0); float brightness : register(c0); float contrast : register(c1); float4 main(float2 uv : TEXCOORD) : COLOR { ..
发布时间:2020-11-23 18:48:00 C#/.NET