fragment-shader 相关问题

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

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

如何从 ShaderToy 录制高比特率的着色器屏幕视频?

我在 ShaderToy 中编写了一个嘈杂的着色器,我想从中录制视频。 ShaderToy 提供了此选项,但它以非常低的比特率捕获屏幕。有机会得到视频吗...

回答 2 投票 0

如何在Three.js Material的Augmented Fragment Shader中自定义Alpha透明度?

我正在使用 onBeforeCompile 扩展 THREE.MeshStandardMaterial 以调整着色器的一些细节。我的顶点着色器工作正常,但我无法弄清楚如何设置 alpha/

回答 1 投票 0

Three.js 中的自定义纹理着色器

我只是想创建一个非常简单的片段着色器,将指定的纹理绘制到网格上。我研究了一些实现相同功能的自定义片段着色器,并构建了我自己的

回答 1 投票 0

d3d12:添加常量缓冲区时,输出结构发生变化

灯带,这个与float3 worldPos有关 由于某种原因它不会沿 x 轴改变 在此输入图像描述 根据 worldPos 为像素着色 在此输入图像描述

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.