Articles of 着色器

片段着色器输出types错误

StackExchange! 我一直在使用opengl了一下,我试图最终加载着色器,而不是让他们内联。 不过,我有很多问题。 只要我解决了一个,另一个popup。 现在,问题是glGetProgramInfoLog报告“片段着色器输出types错误”。 我认为这可能是由于旧的显卡 – 英特尔Graphics 300引起的,但是它在内联(直接作为const char *)时正在工作。 有谁知道这可能意味着什么,以及如何解决这个问题? 提前致谢! 顶点着色器: #version 400 compatibility layout (location = 0) in vec3 vertexPosition; uniform mat4 Model; uniform mat4 View; uniform mat4 Projection; void main () { gl_Position = Projection * View * Model * vec4(vertexPosition, 1.0); } 片段着色器: #version 330 layout(location = 0) out […]

立方体贴图在GS着色器中面向旋转

我无法正确旋转立方体贴图的面孔。 这应该来到几何着色器,从相机“视图”matrix我想让我的立方体贴图6面,但似乎我不能正确地得到它… 我的第一个猜测,相机'缩进'matrix面对'-z': // +X // rot[0] = (mat4 ( 0 , 0 , -1.0 , 0 , 0 , 1.0 , 0 , 0 , 1.0 , 0 , 0 , 0 , 0 , 0 , 0 , 1.0 )) ; // -X / rot[1] = (mat4 ( 0 , 0 , 1.0 […]

XNA失真着色器问题

所以我想出了一个失真像素着色器在hlsl,但它有一些问题。 首先,它是如何工作的: 着色器使用由程序生成的另一个纹理作为变形“映射”(如果这是正确的术语),我将该映射称为“蒙版”。 着色器使用掩模中的红色值进行水平失真,蓝色值用作垂直失真。 绿色值不被使用。 它从红色和绿色值中减去0.5,使得它们的范围从-0.5到0.5而不是0到1.这使得失真只用两个颜色值在任何方向上进行。 我让着色器将像素“推”到128像素。 sampler s0; texture textu; sampler tex_sampler = sampler_state{Texture = textu;}; float2 screenSize; float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0 { float4 tex_color = tex2D(tex_sampler, coords); if (tex_color.a) { float distX = (tex_color.r – 0.5f) * (256.0f / screenSize.x) * tex_color.a; float distY = (tex_color.b – 0.5f) * (256.0f / […]

如何将结构设置为Direct3D9顶点着色器常量?

我有一个vs_2_0像这样的着色器: struct ConstantBuffer { float4 diffuse; float4 specular }; shared uniform ConstantBuffer g_cb : app_constantBuffer; void PS(out float4 Color: COLOR0) { Color = g_cb.diffuse; } 上面的例子很简单,常量缓冲区只存储两个4个组件的颜色。 我想在绑定像素着色器之前设置常量缓冲区。 我不想使用ID3DXEffect接口。 IDirect3D9Device接口只提供了设置原始types的方法…我想一次设置整个结构。 这可能吗?

Unity:cg片段着色器处理点的数组

我需要编写一个片段着色器,它可以以某种方式知道场景中的N个点,并根据它们与点的世界坐标距离变暗像素。 我正在寻找一种适合移动设备的方法。 我的图像我可以通过点作为纹理,但我卡在搞清楚如何有效地评估如果一个像素是足够接近的任何N点(我知道如何做到这一点,但没有一个N循环?)。 任何想法,如果这是可行的性能高效的方式? 所有的想法都欢迎。 谢谢!

如何设置HLSL着色器input纹理?

非常简单的问题。 使用C ++ / Direct9,我创建了一个纹理RenderTarget与全屏幕四,创建一个场景,设置HLSL像素着色器,复制图像,然后调用Present。 1)着色器的input纹理如何被定义? 它是否自动configuration,如果是这样的话? 我们来看看这个非常基础的示例着色器。 sampler2D TexSampler : register(S0); float4 main(float2 uv : TEXCOORD) : COLOR { float4 color = tex2D(TexSampler, uv); return float4(1 – color.rgb, color.a); } 2)在链中的哪个地方着色器的魔法被应用? 不知何故,它没有被应用,我不知道在哪里看。 3)如何着色2个纹理作为input,如何configurationinput? sampler s0 : register(s0); sampler s1 : register(s1); float4 p0 : register(c0); float2 p1 : register(c1); #define width (p0[0]) #define height […]

如何启动和停止GLSL着色器?

有没有办法启动和停止着色器? 我想使用这个着色器扫描一次纹理,然后停下来。 有人知道如何做到这一点? void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 r = fragCoord.xy / iResolution.xy; ry = 1.0 – ry; vec4 tex = texture2D(iChannel0,r.xy); tex += vec4((sin((ry)+rx + iGlobalTime*3.)) + tex)/2.; fragColor = tex; }

将SpriteBatch.DrawString()函数中的“Color”参数映射到自定义着色器

我最近发现了一个很好的方式来使用自定义字体和自定义着色器在XNA中渲染文本。 这里是游戏代码**: using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System.Reflection; namespace Custom_SpriteFont_Test { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; SpriteFont Font1; SpriteFont Font2; Effect FontEffect; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; graphics.PreferredBackBufferWidth = 1024; graphics.PreferredBackBufferHeight = 768; } protected override void LoadContent() { […]

在glsl着色器中绘制立方体

我正在研究一个体素引擎。 目前我的多维数据集呈现为vbos。 我认为,最好只加载体素的cooridinates到着色器,并绘制一个立方体本身。 有人可以告诉我,如果可能的话,如果可能的话,怎么样?

苹果金属API如何区分制服和顶点缓冲区?

我不确定金属是如何区别制服和顶点缓冲区的? 据我所知,在缓冲区传递制服的代码和顶点一样: [self.commandEncoder setVertexBuffer:positionBuffer offset:0 atIndex:0]; [self.commandEncoder setVertexBuffer:uniformBuffer offset:0 atIndex:1]; 在着色器代码中,没有关键字将一些结构体定义为制服,所以Metal如何知道它? 在Opengl GLSL是统一的关键字,这是明确的,但我不知道如何解决金属。