着色器是用于对计算机图形中的几何或像素数据执行计算的程序。
我是 WebGPU 的初学者,想要在单独的着色器模块中处理具有多个处理阶段的图像: 去饱和度 边缘检测 压缩 然后第 4 步计算压缩后的纹理...
#ifdef GL_ES 精密中型浮子; #万一 统一 vec2 u_分辨率; 统一 vec2 u_mouse; 统一浮动u_time; vec3 color_bg = vec3(1.0); vec3 圆颜色 = vec3(0.0, 0.0, 0.0); 无效循环...
我有glsl片段着色器代码需要更改线条颜色,背景颜色和正弦波的方向 精密中型浮点; #万一 统一 vec2 u_分辨率; 统一 vec2 u_mouse; 你...
我正在使用 p5js 编写一个 Perlin 噪声地形生成器,遵循本教程。该应用程序运行不佳,因此我决定使用着色器重写它,这是我以前从未使用过的东西。我从生成开始...
我是着色器新手,我正在观看向模型添加轮廓的教程。 教程很完美,但我遇到了问题。 该着色器适用于具有一种材质的对象,就我而言,我有一个
我的游戏中有多个“可交互”对象,它们都扩展了 InteractableBody 类,该类设置了一些内容,以便玩家可以与该对象进行交互。我正在尝试添加轮廓...
我有由Houdini 中的实验室顶点动画纹理ROP 导出的顶点动画纹理。 现在我想在我自己用 Bevy(一个用 Rust 编写的游戏引擎)制作的游戏中使用它,而不是 Unity 或 UE。 我妈...
是否可以在同一个着色器中拥有持久数据? 类似于制服,只不过着色器本身可以设置它。 我想做的是将一个顶点嵌入到我的顶点流中......
在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); }
在 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); }
我有一个 Godot CanvasItem 着色器,它被分配给 TileMap 中特定图块的材质。在着色器中,我需要知道灯光相对于图块底部的位置。 我是com...
所以我使用URP,点燃材料。 我有一个带有单个 fbx 模型的三明治对象,只有一个子网格。三明治的制作顺序是面包-番茄-奶酪-火腿-生菜-面包 当不透明时,它
我正在尝试重新创建其行为类似于 UI 中的径向填充图像的着色器。 这是 URP Unlit 着色器: 但有一个问题。我想将我的 alpha 输出限制为 0 或 1,因为...
在我的应用程序中,我使用计算着色器快速地阐述数据。我为模型的每个实例分配一个计算着色器。例如,我有 30 个实例,我调度一个 Compute Shade...
在Godot4(3D)中,如何使靠近相机的物体对一个相机透明,但对另一个相机不透明?
我正在开发一款 2 人合作游戏。两人同在一艘船上。其中一名是飞行员,另一名负责射击船上的炮塔。问题是我想造船
目前,我正在将旧代码从 DirectX 第九版移植到较新的第十一版,并且在寻找现有属性和功能的类似物方面遇到了一些困难。
我只能使用 DirectX 9 和 asm。如果我使用以下顶点着色器: 结构体VS_INPUT { float4 pos:位置; float2 t0 : TEXCOORD0; }; 结构体 VS_OUTPUT { float4 pos:位置; 佛罗里达...
我编写了一个带有边缘函数的三角形着色器,并尝试使用权重对其进行着色,但出于某种原因,颜色分为 4 个单独的三角形,每个三角形都有自己较小版本的着色器...
如何在WebGL2着色器中使用CSS的matrix3d矩阵?
我目前有一个我喜欢的CSS矩阵3d变换,让我们以这个为例: 变换:matrix3d(1.3453,0.1357,0.0,0.0003,0.2096,1.3453,0.0,0.0003,0.0,0.0,1.0,0.0,-100.0,-100.0,0.0,1.0); 反式...
我在 godot 以及官方视觉着色器节点中尝试了几个三平面着色器,但它们似乎都会产生线条/伪影: 这是三平面映射所固有的还是更可能是......