fragment-shader 相关问题

用于渲染的GPU程序。对从栅格化基元中获取的每个样本执行它。此过程的输出是许多值和浮点深度。

在片段着色器 Threejs 中将 ndc 坐标转换为世界坐标

我的目标是在平面上围绕鼠标光标绘制一个圆圈。 我得到代表我的光标位置的 NDC 坐标(-1 到 +1): const rect = targetHTML.getBoundingClientRect(); 常量

回答 2 投票 0

在 Godot 4 中,着色器未对正确的像素进行着色

我有一个 TileSet,我正在尝试将自定义 Shader 和 ShaderMaterial 应用到我的其中一个图块。 然而,它并没有遮蔽正确的区域。 我是 Godot 和游戏开发的新手,但是......

回答 1 投票 0

OpenGL - 如何访问深度缓冲区值? - 或者:gl_FragCoord.z 与渲染纹理深度

我想访问像素着色器中当前处理的像素处的深度缓冲区值。 我们怎样才能实现这个目标呢?基本上,似乎有两种选择: 渲染纹理的深度。怎么会...

回答 3 投票 0

GLSL 弹跳球问题

#ifdef GL_ES 精密中型浮子; #万一 统一 vec2 u_分辨率; 统一 vec2 u_mouse; 统一浮动u_time; vec3 color_bg = vec3(1.0); vec3 圆颜色 = vec3(0.0, 0.0, 0.0); 无效循环...

回答 1 投票 0

GLSL片段着色器正弦波改变方向和颜色

我有glsl片段着色器代码需要更改线条颜色,背景颜色和正弦波的方向 精密中型浮点; #万一 统一 vec2 u_分辨率; 统一 vec2 u_mouse; 你...

回答 1 投票 0

在 RESHADE Pixel Shader 中读取纹理数据时出现问题

我对重新着色很陌生,但对整个编程并不陌生。我尝试使用现代重新着色来实现计算着色器,然后将其信息传递给像素着色器,该像素着色器将该数据传递给...

回答 1 投票 0

修复 Godot4 Shader 上不正确的颜色

不同渲染器之间的草地着色器采样地面纹理结果不一致 我目前正在开发一个草着色器,可以对 Godot 4 中的地面纹理进行采样。但是,我遇到过......

回答 1 投票 0

在ThreeJS中使用点时,如果使用深度书写,每个点上都有黑色背景

我有一个使用点的场景,就像这样 我有一个使用点的场景,就像这样 <points ref={gPoints} position={position}> <bufferGeometry attach="geometry"> <bufferAttribute attach="attributes-position" count={positions.length / 3} array={positions} itemSize={3} usage={THREE.DynamicDrawUsage} /> // ... bunch of attributes </bufferGeometry> <shaderMaterial depthWrite={false} depthTest={false} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} /> </points> 我使用片段着色器来提供模糊效果 uniform float uResolutionWidth; uniform float uResolutionHeight; varying vec3 vColor; varying vec4 vRealPosition; varying float vDistance; void main() { float d = length(gl_PointCoord.xy - 0.5); float alpha = smoothstep(0.5, 0.15, d); gl_FragColor = vec4( vColor, alpha ); } 在顶点着色器中,我主要更新位置,但这是我设置的方式vColor #define PI 3.14159265358979323846 uniform float uTime; uniform float uRadius; attribute float pointSizes; attribute float randomX; attribute float randomY; attribute float randomZ; attribute float randomW; varying vec3 vColor; void main() { // set the vertex color float d = length(abs(position) / vec3(96.0, 22.0, 96.0)); d = clamp(d, 0.0, 1.0); float d2 = abs(position.y); vColor = mix(vec3(244.0, 131.0, 12.0), vec3(82.0, 27.0, 255.0), d2/22.0) / 255.; } 这是没有深度写作的情况下的样子的图片 但是当我像这样启用深度写作时 <shaderMaterial depthWrite={true} depthTest={true} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} transparent={true} // I also tried with and without transparent setting /> 现在每个点都有一个矩形黑色背景 然后我尝试丢弃 alpha 太低的点 uniform float uResolutionWidth; uniform float uResolutionHeight; varying vec3 vColor; varying vec4 vRealPosition; varying float vDistance; void main() { float d = length(gl_PointCoord.xy - 0.5); float alpha = smoothstep(0.5, 0.15, d); // Discard fragments that are fully transparent if (alpha < 0.001) { discard; } gl_FragColor = vec4(vColor * alpha, alpha); } 这就是它的样子 有谁知道黑色背景的原因是什么以及如何解决它?如果使用深度写作,这只是一个问题,任何帮助都值得赞赏<3 最终对我有用的是禁用 ThreeJS 中的深度写入 <shaderMaterial transparent={true} depthWrite={false} depthTest={true} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} /> 在片段着色器中我更改了 smoothstep 计算 void main() { vec2 cxy = 2.0 * gl_PointCoord - 1.0; float r = dot(cxy, cxy); float alpha = 1.0 - smoothstep(0.0, 1.0, r); vec3 brightColor = vColor * alpha; gl_FragColor = vec4(brightColor, alpha); }

回答 1 投票 0

在 ThreeJS 中使用点时,如果使用深度书写,每个点上都会有黑色背景

我有一个使用点的场景,就像这样 我有一个使用点的场景,就像这样 <points ref={gPoints} position={position}> <bufferGeometry attach="geometry"> <bufferAttribute attach="attributes-position" count={positions.length / 3} array={positions} itemSize={3} usage={THREE.DynamicDrawUsage} /> // ... bunch of attributes </bufferGeometry> <shaderMaterial depthWrite={false} depthTest={false} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} /> </points> 我使用片段着色器来提供模糊效果 uniform float uResolutionWidth; uniform float uResolutionHeight; varying vec3 vColor; varying vec4 vRealPosition; varying float vDistance; void main() { float d = length(gl_PointCoord.xy - 0.5); float alpha = smoothstep(0.5, 0.15, d); gl_FragColor = vec4( vColor, alpha ); } 在顶点着色器中,我主要更新位置,但这是我设置的方式vColor #define PI 3.14159265358979323846 uniform float uTime; uniform float uRadius; attribute float pointSizes; attribute float randomX; attribute float randomY; attribute float randomZ; attribute float randomW; varying vec3 vColor; void main() { // set the vertex color float d = length(abs(position) / vec3(96.0, 22.0, 96.0)); d = clamp(d, 0.0, 1.0); float d2 = abs(position.y); vColor = mix(vec3(244.0, 131.0, 12.0), vec3(82.0, 27.0, 255.0), d2/22.0) / 255.; } 这是没有深度写作的情况下的样子的图片 但是当我像这样启用深度写作时 <shaderMaterial depthWrite={true} depthTest={true} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} transparent={true} // I also tried with and without transparent setting /> 现在每个点都有一个矩形黑色背景 然后我尝试丢弃 alpha 太低的点 uniform float uResolutionWidth; uniform float uResolutionHeight; varying vec3 vColor; varying vec4 vRealPosition; varying float vDistance; void main() { float d = length(gl_PointCoord.xy - 0.5); float alpha = smoothstep(0.5, 0.15, d); // Discard fragments that are fully transparent if (alpha < 0.001) { discard; } gl_FragColor = vec4(vColor * alpha, alpha); } 这就是它的样子 有谁知道黑色背景的原因是什么以及如何解决它?如果使用深度写作,这只是一个问题,任何帮助都值得赞赏<3 最终对我有用的是禁用 ThreeJS 中的深度写入 <shaderMaterial transparent={true} depthWrite={false} depthTest={true} fragmentShader={fragmentShader} vertexShader={vertexShader} uniforms={uniforms} blending={THREE.AdditiveBlending} /> 在片段着色器中我更改了 smoothstep 计算 void main() { vec2 cxy = 2.0 * gl_PointCoord - 1.0; float r = dot(cxy, cxy); float alpha = 1.0 - smoothstep(0.0, 1.0, r); vec3 brightColor = vColor * alpha; gl_FragColor = vec4(brightColor, alpha); }

回答 1 投票 0

GLSL pow 函数?

我有这个: 浮动 xExponential = pow(xPingPong, 5); 并且不起作用,声称: 错误:0:53:没有匹配的重载来调用函数“pow” 我做错了什么吗? 开发...

回答 3 投票 0

未限制范围的 OpenGL 深度测试

我正在使用带有顶点和片段着色器的 OpenGL 管道,因此需要启用早期片段测试。 因此深度测试始终使用顶点着色器输出 gl_Position.z 来完成

回答 1 投票 0


用 fxc.exe 替换 PixelShaderCompile 任务(迁移到 VS2022 是必需的)。获得相同的功能。放入资源(嵌入?)

有些人可能知道,从 VS2022 开始,对 PixelShaderCompile 的支持已被取消。一种是假设使用 fxc.exe (我相信)。 有关此问题的讨论,请参阅: 在 VS202 中构建像素着色器项目...

回答 1 投票 0

Godot Tilemap 平铺着色器 |将像素数据映射到图块颜色

我一直在尝试根据纹理中的颜色设置图块的颜色。纹理的大小相当于图块地图的大小,其中每个像素代表一个图块。我需要这些信息,因为...

回答 1 投票 0

Unity 高斯模糊着色器只是让我的纹理变白 - 为什么?

我正在尝试根据本教程制作高斯模糊着色器: https://github.com/mattdesl/lwjgl-basics/wiki/ShaderLesson5 但是当我将它转换为 Unity 的着色器语言时,我什么也没得到......

回答 2 投票 0


Deck.gl v9 自定义片段着色器已损坏(错误:链接期间出错:片段着色器未编译。)

我正在使用 Deck.gl 来可视化 _TextBackground 子图层上带有圆角的文本图层。 我的代码基本上是以下示例的副本,但它不适用于 Deck.gl v9(工作正常......

回答 1 投票 0

GPU 执行指令流水线吗?

我通常编写和优化在CPU上运行的代码,但是我目前正在尝试编写用于光散射的着色器。 我知道 CPU 有一定的优化,以便尝试接近 1

回答 1 投票 0

尝试转换为 JS 时如何在 WebGL Javascript 中实现 Shadertoy 缓冲区?

我正在尝试将 Shadertoy 转换为 Javascript 和 WebGL,以便它可以独立于 Shadertoy 运行。 Shadertoy 有缓冲区的概念,在这个例子中它重新循环缓冲区并导入...

回答 1 投票 0

像素着色器中的两个问题

我的像素着色器无法工作。我在这方面很糟糕,所以我无法解决这个问题。下面是像素着色器代码: 缓冲区CBuf { float4face_colors[6]; }; float4 main(uint tid : SV_Primit...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.