Articles of 着色器

材料拼贴和统一抵消

模糊性:平铺材料和材料偏移之间的区别究竟是什么? 需要做: 我需要在需要通过脚本设置n的值的对象上重复n次材质,我该怎么做? 它似乎通过平铺发生(通过督察尝试),但mainTextureOffset和setTextureOffset之间mainTextureOffset什么区别? 尝试: 以下是我尝试在一个对象上重复纹理n次的代码行(在对象的宽度上重复),但是它没有任何意义,我可以看到。

用HD实现复古的分辨率

我真的无法find任何提示(也许我只是再次缺乏正确的话),但我正在考虑如何使用现代系统来获得一些复古的外观(特别是SNES 16位)。 基本上,游戏仍然以原始分辨率运行,然而,纵向和横向我们被限制为256×224(512×448)。 调色板现在不是问题。 所以我基本上想出了这个想法,并想知道这是一个聪明的方法(使用OpenGL): 创建256单位宽度和224单位宽度的正交投影matrix。 使用不对纹理进行抗锯齿的片段着色器,因此纹理会放大以查看像素-y。 由于我不能真正find2)的着色器,我也想出了一个计划b): 和1a一样) 根本不要使用纹理,用1×1彩色四边形replace像素,将Spritesheet转换为由四边形组成的3D模型。 我认为计划a)似乎更现实,但是。 但是我想知道其他游戏(铲骑士,自由星球)如何处理像素,复古的外观,保持真实的20年前的系统。

DirectX 11中的硬件实例转换问题

在尝试使用实例时,我在应用程序中遇到了一些不可思议的几何。 我不确定是否我的每个实例数据的映射错了。 这是我的映射如何: XMMATRIX scale = XMMatrixScaling( 1.0f, 1.0f, 1.0f ); XMMATRIX rotation = XMMatrixRotationY( mRotation * 10.0f ); XMMATRIX translation = XMMatrixTranslation( 0.0f, 0.0f, 0.0f ); XMMATRIX finalTransform = scale * rotation * translation; XMFLOAT4X4 world; XMStoreFloat4x4( &world, XMMatrixTranspose( finalTransform ) ); mBox->PerInstanceData( world ); D3D11_MAPPED_SUBRESOURCE mappedResource; hr = mDeviceContext->Map( mPerInstanceBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, […]

着色器值重新映射 – 混合衰减

我想知道是否有一种方法来重新映射从0到1这样的值。 到那些价值(那些是例子)。 这可能是一些function转换,但我找不到这样做。 我试过使用查找纹理,但在我看来,这不是最好的解决scheme。 非常感谢你。

着色器根据光线更改Alpha

我使用Unity,而且我需要一个特殊的着色器。 不幸的是我关于着色器的技能非常有限,我很快需要这个着色器。 所以我想要一个着色器在平面上显示一个不亮的纹理,当一个光线影响飞机,而不是在飞机上进行照明时,我希望光线能够改变alpha,使“点亮”的表面透明。 我认为对于知道如何制作着色器的人来说并不难,所以如果你能帮助我做到这一点,那对我来说可能是非常有用的! 编辑: 好的,也许不是很清楚。 我讲的是一盏灯,但没有必要一盏灯,它可以是一个其他types的物体,或只是一个位置。 我想要的是有一个没有照明的图像,在这个纹理上有一个可移动的圆形区域,使得区域透明,就像这张图片上的白色圆圈(设想with只是透明度)。 边界不一定是平滑的边界,也可以是硬边界。 我曾经想过一个聚光灯,因为它就像是在聚光灯下移动,而不是照明,我想把“点亮”的像素设置为透明(但是没有点亮,只是为了解释我想要的),一个,d这是没有必要的光 是的,没有照明的着色器不能做到这一点我想,我可能需要一个自定义着色器,但我不知道如何(我曾经想过要采取一个基本的照明着色器,并使用计算的光强度像素来设置alpha而不是使用它来设置像素的强度,但我不知道如何做到这一点)

片段着色器,色彩问题

我是着色器新手,我正在尝试着色纹理来标记敌人的状态。 我在OpenGL ES 2.0(Mobile)上实现着色器 问题是,在这个着色器中,我看到敌人没有改变(即使我把de fragcolor分配给(1.0,0,0,1.0),实际的代码也被注释掉了)。 顶点着色器 uniform mat4 u_MVPMatrix; // A constant representing the combined model/view/projection matrix. uniform mat4 u_MVMatrix; // A constant representing the combined model/view matrix. attribute vec4 a_Position; // Per-vertex position information we will pass in. attribute vec3 a_Normal; // Per-vertex normal information we will pass in. attribute vec2 a_TexCoordinate; // […]

GLSL:用混合replace三元运营商的问题

我期待这两个代码片段做同样的事情: return vec3( 1.0-br>=ar ? 0.0 : 1.0-((1.0-br)/ar), 1.0-bg>=ag ? 0.0 : 1.0-((1.0-bg)/ag), 1.0-bb>=ab ? 0.0 : 1.0-((1.0-bb)/ab) ); 和 return mix( ONE3 – ((ONE3-b)/a), ZERO3, vec3(greaterThanEqual(ONE3-b, a)) ); // ONE3=vec3(1.0,1.0,1.0); ZERO3=vec3(0.0,0.0,0.0); 出于某种原因,他们有不同的产出。 你知道为什么吗? (有时可以有零)

什么原因造成这个InvalidOperationException?

我正在努力在当前的游戏中实现2D掩蔽效果。 为此,我有两个纹理,一个用于源图像,另一个用于掩码。 源图像只是一个普通的纹理,所以很容易。 我通过使用graphicsDevice.DrawUserIndexedPrimitives呈现给渲染目标而生成的蒙版,但是当我尝试时,会popup以下错误消息。 这是试图渲染到蒙版渲染目标的函数。 顶点的types是VertexPositionColor。 private void RenderMaskTarget(SpriteBatch sb) { graphicsDevice.SetRenderTarget(maskTarget); graphicsDevice.Clear(Color.Transparent); sb.Begin(SpriteSortMode.Deferred, null, null, null, null, basicEffect, camera.Transform); graphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.LineStrip, vertices, 0, vertices.Length, indexData, 0, primitiveCount); sb.End(); } 这是创造我的基本效果的function。 private void CreateBasicEffect() { Matrix projection = Matrix.CreateOrthographicOffCenter(0, Constants.ScreenWidth, Constants.ScreenHeight, 0, 0, 1); Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0); basicEffect = new BasicEffect(graphicsDevice) { World […]

统一,深入透明的对象背后

有没有办法知道在着色器中透明物体背后有多远? 就像在接近岸边时使水完全透明一样。

团结 – 创建一个着色器可见的光线,而不是照相机/播放器?

我正在写一个顶点变形着色器,可以对某些对象的存在作出反应。 最初我使用SetVector将坐标传递给着色器,但是从我的理解来看,着色器上的CPU设置属性有点贵。 所以我的另一个想法是让着色器对光做出反应,然后做一些matrix乘法,让着色器根据光照强度自行变形。 我的问题是,我怎么能够写一个会对光源做出反应的着色器,而这个光照对于相机/播放器是不可见的? 在这种情况下,我可以编写一个快速且合理简单的着色器,能够对特定的光源做出反应,使其能够对光的位置和距离进行dynamic反应。 只有这样的光源对于玩家来说是不可见的,因为它只是被用作位置和距离的表示(具有容易地混合多个不同源的附加益处)。 或者还有其他一些更好的方法来做到这一点,我没有想到? 谢谢您的帮助! 编辑:设想一个着色器,当一个特定types的对象靠近它时,会导致一个表面向外生长,并且其挤出距离与对象的距离和“强度”(某些浮点数)成正比。 如果在表面附近有几个这样的物体,那么它将形成一个考虑到所有这些附近物体的图案。