Questions tagged «hlsl»

由Microsoft开发的一种专有着色语言,用于与Microsoft Direct3D API结合使用。


1
AAA游戏如何在色调映射着色器中使用此纹理?
我发现《战地风云3》和《圣徒之街三号》在其最终的色调映射阶段都使用了这种纹理。任何人都可以共享指向有关如何使用此纹理的文章的链接吗? 更新:由于网上几乎没有任何实现颜色分级的示例,我将发布XNA 4.0的快速而肮脏的示例。除了从头开始在GPU上构建默认的2d颜色图,将其内容复制到CPU上的3d纹理并使用答案中提供的文章中的着色器代码执行实际的颜色校正外,此操作什么都不做。 XNA 4.0色彩校正样本 如果您想知道该怎么办,请看这里: http://the-witness.net/news/2012/08/fun-with-in-engine-color-grading/ 简而言之,作者在那里解释,您如何基本上可以使用顶部的默认颜色分级调色板来制作正常游戏图像的屏幕截图,在photoshop中执行屏幕截图颜色校正,将变形的颜色校正调色板剪切并将其复制到引擎中并具有颜色校正会自动应用于每个游戏场景。
43 textures  hlsl 

5
游戏中的演员应该负责吸引自己吗?
我对游戏开发非常陌生,但对编程却不是。 我(再次)使用JavaScript的canvas元素在玩Pong类型的游戏。 我创建了一个Paddle具有以下属性的对象... width height x y colour 我也有一个Pong具有诸如...的属性的对象 width height backgroundColour draw()。 该draw()方法当前正在重置canvas,这就是出现问题的地方。 如果Paddle对象具有draw()负责其绘制的方法,或者draw()该Pong对象的负责负责其演员的绘制(我认为这是正确的术语,如果我不正确,请更正我)。 我发现在Paddle实例化两个对象Player和时,绘制自身会很有利Enemy。如果在没有Pong的draw(),我需要两次写类似的代码。 最佳做法是什么? 谢谢。

2
如何使用HLSL创建广角/鱼眼镜头?
为了获得四肢广角镜的效果,需要实施哪些概念? 伪代码和涉及内容流水线各个阶段的具体说明,以及需要从源代码传递到HLSL的哪些信息,将非常有用。 另外,安装广角镜和鱼眼镜头有什么区别?

12
有什么好的学习HLSL的资源?[关闭]
上一次尝试学习HLSL时,我制作了一些着色器,并且大部分都了解我在做什么,但是我仍然觉得自己在黑暗中跌跌撞撞。我从很多博客文章中学到的大部分内容并不能很好地解释。 此外,有关MSDN的文档似乎更多是功能参考。 在哪里不仅可以学习编写HLSL,还可以学习编写着色器的技术?
28 shaders  hlsl 

3
遮罩XNA中2D子画面的最佳方法?
我目前正试图掩盖一些精灵。我没有用语言解释它,而是制作了一些示例图片: 遮盖区域(白色) 现在,需要裁剪的红色精灵。 最终结果。 现在,我知道在XNA中,您可以做两件事来做到这一点: 使用模板缓冲区。 使用像素着色器。 我试图做一个像素着色器,基本上就是这样做的: float4 main(float2 texCoord : TEXCOORD0) : COLOR0 { float4 tex = tex2D(BaseTexture, texCoord); float4 bitMask = tex2D(MaskTexture, texCoord); if (bitMask.a > 0) { return float4(tex.r, tex.g, tex.b, tex.a); } else { return float4(0, 0, 0, 0); } } 这似乎可以裁剪图像(尽管一旦图像开始移动就不正确),但是我的问题是图像一直在移动(它们不是静态的),因此这种裁剪必须是动态的。 有没有一种方法可以更改着色器代码以考虑其位置? 另外,我已经读过有关使用模板缓冲区的信息,但是大多数示例似乎都取决于使用rendertarget,我真的不想这么做。(我已经在其余的游戏中使用了3或4,并且在其上面再添加一个似乎过大了) 我发现唯一不使用Rendertargets的教程来自Shawn …
24 xna  2d  hlsl  masking 

7
现代着色书?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我对了解着色器感兴趣:它们是什么,何时/何地使用它们,以及如何使用它们。(特别是我对水和光晕效果感兴趣,但是我对着色器的了解接近于0,因此我需要进行一般性介绍)。 我看到了很多已经有两年历史的书籍,所以我不知道它们是否仍然适用。目前,我的目标是XNA 4.0(我认为这意味着适用于Shader Model 4.0的HLSL Shaders),但是我认为通常针对DirectX 11和OpenGL 4的任何东西都是有帮助的。

2
模型周围有奇怪的白色轮廓
我正在使用XNA 4开发游戏,最近我按照本指南切换到了延迟着色实现。现在,我的模型上出现了一个奇怪的白色轮廓,我不确定是什么原因引起的。我认为可能是普通渲染目标或深度渲染目标缺乏精确度,但将它们提高到64位(Rgba64)而不是32位(彩色)没有帮助。我还认为镜面反射计算可能存在一些问题,因此我尝试将镜面反射设置为0,但这也没有帮助。在PIX中调试像素显示该像素的漫反射值被计算为接近白色。有任何想法吗?我在下面提供了该问题的图片,以完整尺寸查看时更容易。 像素着色器: float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0 { input.ScreenPosition.xy /= input.ScreenPosition.w; float2 texCoord = 0.5f * (float2(input.ScreenPosition.x, -input.ScreenPosition.y) + 1) - halfPixel; float4 normalData = tex2D(normalSampler, texCoord); //Transform normal back into [-1, 1] range float3 normal = normalize(2.0f * normalData.xyz - 1.0f); float specularPower = normalData.a; float specularHardness = …
19 xna  hlsl 

1
产生油性/污染性水?
那里的所有着色器向导都具有如何实现油性/污染水效果的想法,类似于以下内容: 理想情况下,水不是均匀油性的,而是可以从某些来源(例如化工厂的排污口)中产生油,然后扩散到整个水体中。对于这部分,我的想法是保留“油图”作为2D纹理,该纹理确定水面上每个点的油密度。它会随着水的倾斜而自然扩散并移动;此时,卵性(我对动态波进行了波粒模拟,并且已经在水面上进行了类似的泡沫处理)。但是,由于油可能不会以与水相同的速度运动,因此我不确定这在物理上的正确性。 而且我不知道如何制作所有那些令人迷惑的颜色:-)。有什么想法吗?

3
如何创建这样的照明效果?
这是我见过的最漂亮的2D照明,我也想执行这样的照明。我该怎么做? 我不在乎物理或粒子如何模拟 -我只想了解照明。 以下是一些视频供参考: http://www.youtube.com/watch?v=BIQRhOFkvQY http://www.youtube.com/watch?v=tnTYXPuecMs http://www.youtube.com/watch?v=rhC_jVM8IYU http://www.youtube.com/watch?v=_Aw5BdjWqqU 或者,您可以在此处下载《污染星球2》。
18 xna  lighting  hlsl 

1
ddx(hlsl)实际做什么?
我有点困惑。官方文档(http://msdn.microsoft.com/zh-cn/library/windows/desktop/bb509588(v=vs.85).aspx)表示ddx(input)是输入方面的偏导数到“屏幕空间的x坐标”。 我的演算很好,但是如何分辨输入来自什么呢?如果我给它传递一个函数,很好,我可以想象它会做什么,但是数字的导数始终为零...? 只是缩放吗?就像,它将在此距离缩放到其大小的十分之一,因此返回十分之一?但这并不需要输入... 有人可以快速解释一下实际情况吗?
17 hlsl 

4
HDR如何运作?
我试图了解什么是HDR及其工作方式。 我了解基本概念,并对如何使用D3D / hlsl进行实现有一点了解。 但是,它仍然很雾。 假设我要渲染一个具有地球纹理和一小部分顶点的球体,以充当恒星,那么如何在HDR中渲染呢? 这是我有些困惑的事情: 我猜想,我不能为纹理使用任何基本的图像格式,因为在着色器中,值将限制为[0,255]并限制为[0,1]。后缓冲区同样如此,我认为格式需要为浮点格式? 还涉及哪些其他步骤?当然,不仅仅需要使用浮点格式来渲染到渲染目标,然后在后期处理中应用一些光晕?(考虑到输出将始终为8bpp) 基本上,HDR的步骤是什么?它是如何工作的 ?我似乎无法找到任何好论文/文章描述的过程中,除了这一个,但它似乎有点掠过基础,所以它的混乱。
17 c++  hlsl  directx11  hdr 

7
Perlin噪音造成的世界中的产卵单位?
我在Perlin基于噪音的游戏中遇到了一些问题。请看下面的截图。 您看到的白色区域是墙壁,黑色区域是可步行的。中间的三角形是玩家。 我已经在游戏中实现了物理学,方法是将其绘制到纹理(白色或黑色像素)上,然后从CPU中获取。 但是,现在我面临另一个问题。我希望单位(或小兵,无论您叫什么)在屏幕边缘不断生成。这里的要点是,在最终游戏中,将会出现“战争迷雾”,无论如何玩家都无法看到它。 我认为我可以只扫描屏幕边缘的像素,看看它们的物理纹理是否为黑色,然后在其中随机生成东西。但是,如果您再看一下屏幕截图,则(在左上角)有一个我不想让小兵产生的示例(因为它们无法从那里到达玩家) 。 GPU是否可以以某种方式为我确定这些生成点,或者以其他方式确定?我考虑过要在屏幕边缘的建议点和播放器之间制作矢量,然后每10个体素跟随一次矢量,看一面墙是否发生碰撞,然后在此处生成一个单元。 但是,上面提出的解决方案可能会占用过多CPU资源。 关于这个问题有什么建议吗? 注意1 对于生成的单位,我不希望使用任何形式的寻路以避免墙碰撞,因为这些单位朝向玩家。因此,这些单位必须在屏幕的边缘生成,并且该位置必须朝向玩家的直线走,而不会碰到任何墙壁。
16 xna  path-finding  hlsl  gpgpu 

5
避免在DirectX 10着色器中使用if语句?
我听说应该在着色器中避免if语句,因为语句的两个部分都将被执行,并且错误的语句将被丢弃(这会损害性能)。 在DirectX 10中仍然存在问题吗?有人告诉我,只有正确的分支才能执行。 对于该示例,我有以下代码: float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3; if(x>0.5){ x = 10 * y1 + b1; }else{ x = 10 * y2 + b2; } 还有其他方法可以使其更快吗? 如果是这样,该怎么办? 两个分支看起来都相似,唯一的区别是“常量”的值(y1, y2, b1, b2对于Pixel Shader中的所有像素都是相同的)。

1
如何制作“ Life is Strange”之类的轮廓着色器?
我想让像生活一样的素描着色器变得奇怪。 着色器有两个部分: 1.动画虚线 2.嘈杂的轮廓 我想知道如何制作嘈杂的轮廓? 看到物体的轮廓 首先,我尝试通过复制输入的顶点数据来制作轮廓,并根据法线方向缩放,然后再按Cull Back。但是我认为这类似于“ 图像效果”,因为轮廓有时会在对象内部移动。无论如何,如果有人帮助我实现此着色器,我将不胜感激:) 我尝试了什么 我使用了边缘检测并通过顶点着色器对其进行了动画处理,但这并不像上面的gif那样好。
13 unity  shaders  hlsl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.