vertex-shader 相关问题

顶点着色器是可执行程序,其作为现代图形API中的可编程几何管线的一部分执行,例如, Direct3D或OpenGL。顶点着色器现在通常在消费者硬件上进行硬件加速。顶点着色器一次处理一个顶点,然后是基本组件,可选择几何着色器和变换反馈,剪切,最后是光栅化和片段处理。

vertex属性在我的Vulkan Programs

在我的程序中,我的顶点设置为:

回答 0 投票 0

(bi)统一着色器图中的切线在修改顶点

我当前的着色器使线性路网遵循一个bezzier。 它也应该允许普通的紫外线映射和世界空间映射。 我试图和th ...

回答 0 投票 0

犹太2D行星 /弯曲世界着色器

我一直在尝试使用着色器创建2D“假星”的效果,但是在起作用的同时,结果并不是很棒。

回答 3 投票 0


顶点着色器和实例化,保留为一个实例的每个顶点计算的一些数据

我正在使用 GLSL 和 Vulkan。有没有一种方法可以使从顶点着色器计算出的数据对于一个实例的所有下一个顶点保持“统一”? 我必须在

回答 1 投票 0

如何在320 es glsl着色器中设置统一?

我得到了以下 glsl 顶点着色器: #版本 320 es // 设置默认精度为中等 精度高整型; 精密中型浮子; 布局(绑定= 0)均匀投影 ...

回答 1 投票 0

在 rust wgpu 中绑定存储缓冲区

我正在学习 rust wgpu。到目前为止,我可以将统一数据发送到着色器。现在我想将存储缓冲区发送到着色器。但我收到以下错误: [错误 wgpu::backend::wgpu_core] 处理 w...

回答 1 投票 0

三个js在顶点着色器之后改变阴影

我有一个顶点着色器,可以移动对象的顶点,但对象投射的阴影保持静态(就像没有应用顶点着色器一样) 这些对象使用三种几何形状进行渲染: BoxGe...

回答 1 投票 0

在 OpenGL 顶点着色器中,w 是什么,为什么要除以它?

无效主(无效) { vec4 ClipCoord = glModelViewProjectionmatrix * gl_Vertex; gl_Position = 剪辑坐标; gl_FrontColor = gl_Color; vec3 ndc = 剪辑坐标.xyz / 剪辑坐标.w; 所以clipCoord是...

回答 1 投票 0

OpenGL ES 3.0 将单个浮点传递给顶点着色器实现

我正在尝试将单个浮点传递给我的顶点着色器以用于反射率计算。我希望有一种简单的方法可以做到这一点,但还没有看到实现的示例。 GLES20.

回答 1 投票 0

球体上的顶点位移破坏了网格

我正在尝试使用着色器在球体上制作简单的噪音效果。 我尝试使用 ashima 的 perlin 噪声,但效果达不到我的预期,因此我基于 Phong 创建了自己的着色器。 这就是...

回答 2 投票 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

OpenGL 启用剪辑距离

我正在尝试在我的 OpenGL 项目中渲染适当的折射/反射,并且我需要使用剪辑距离。我正在关注 Thin Matrix 的教程。 我启用剪辑距离 gl启用(

回答 2 投票 0

未限制范围的 OpenGL 深度测试

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

回答 1 投票 0

顶点着色器中的位移贴图

我是opengl新手 我想使用顶点着色器制作地形。 我将位移图(geo_texture)映射到 256*256 顶点平面(网格) 顶点着色器: 输出 vec3 颜色; 输出 vec2 texCoo...

回答 1 投票 0

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

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

回答 1 投票 0

WebGL 在顶点着色器中定位顶点?

我的目标是为着色器顶点内的顶点指定自定义位置,而不是依赖 JavaScript“new Float32Array(positions)”来定义顶点位置。数据应该

回答 1 投票 0

带有 Qpainter 的 QOpenGLWidget:OpenGL 绘图仅在第一次 PaintGL 调用后可见

我想在 QT 中使用 QOpenGLWidget 来创建快速线图。这些图将带有一些标签,我目前正在使用带有drawText()的QPainter。在各种示例中,

回答 2 投票 0

在顶点着色器中旋转 UV,而不扭曲纹理

我需要在顶点着色器中旋转和缩放 UV,以便旋转的纹理填充其可用的边界框。以下测试实现成功旋转并自动缩放纹理...

回答 1 投票 0

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