vertex-shader相关内容
我在 中寻求有关 OpenGL ES 2.0 问题的帮助这个问题.似乎答案对我来说很奇怪.因此,我决定提出这个问题,希望能够了解发生了什么. 这是一段错误的顶点着色器代码: //一堆制服之类的……统一 int u_lights_active;无效的主要(){//一些代码...对于 (int i = 0; i
..
我有一个 STL 文件加载到我的场景中,其中一种颜色应用于 phong 材质 我想要一种将两种颜色应用到此网格材料的方法,并在 Z 轴上应用渐变效果,如下例所示.渐变花瓶]1 我有一种感觉,我可能需要引入着色器,但我还没有使用 Three.js 做到这一点. 解决方案 简单的渐变着色器,基于uvs: var scene = new THREE.Scene();var came
..
我正在尝试将属性传递给我的顶点着色器,但由于某种原因,它一直在第三个属性位置给我一个 -1,我要求 openGl 通过 glGetAttribLocation() 进行检索.目前它一直给我一个 -1 的 texCoord 属性,如果我切换 texAttrib 和 colAttrib(切换代码中的行),它会给我一个 -1 的颜色属性而不是纹理,我不知道为什么?由于 -1 被传递给 glVertexA
..
void main(void){vec4 clipCoord = glModelViewProjectionmatrix * gl_Vertex;gl_Position = 剪辑坐标;gl_FrontColor = gl_Color;vec3 ndc = clipCoord.xyz/clipCoord.w; 所以 clipCoord 只是做标准的固定管道转换.为什么我要除以 w,我从中得到什么?
..
我目前正在使用着色器 (3.3) 学习 OpenGL.有一件事我似乎无法解决.我已经读过,在 OpenGL 3+ 中不推荐使用 gl_Position 和 gl_FragCoords 等内置变量,因此我想使用自己的输出变量. 所以不是这样: #version 330\nvec2 i_position 中的布局(位置 = 0);出 vec4 o_position;无效主(){gl_Posit
..
我很想知道 gl_PointSize 和 PointCloudMaterial 中的 size 属性之间的关系. 当我使用 PointCloudMaterial 创建一个 PointCloud 并将 size 属性设置为 1 时,粒子远大于使用 ShaderMaterial 创建 PointCloud 并将顶点着色器的大小参数设置为 1 时的粒子.我还考虑了 PointCloudMateri
..
我遇到了这个真正优秀如何通过顶点着色器实现广告牌的示例,以减轻绘制和旋转大量标签以始终面向相机的繁重工作. var 场景;var 书;var shaderMaterial;var renderer = new THREE.WebGLRenderer({抗锯齿:真});renderer.setClearColor(0x000000);document.body.appendChild(rend
..
我正在将 1024 x 1024 的纹理拆分为 32x32 的图块 * 32,我不确定是否可以使用偏移量共享纹理,或者我是否需要为每个具有偏移量的图块创建一个新纹理.. 要创建偏移量,我使用统一值 = 32 * i 并通过创建图块的每个循环实例更新统一值,所有图块似乎都是相同的偏移量?因为基本上我希望图像看起来像它的一个图像没有分解成小块.但是当前的输出在所有 32 个块上都是相同的 x,y
..
我正在使用自定义着色器创建网格.在顶点着色器中,我正在修改几何顶点的原始位置.然后我需要从着色器外部访问这个新的顶点位置,我该如何实现? 解决方案 代替变换反馈(WebGL 1.0 不支持),您将不得不使用直通片段着色器和浮点纹理(这需要加载扩展 OES_texture_float).这是在 WebGL 中在 GPU 上生成顶点缓冲区的唯一方法.WebGL 也不支持像素缓冲区对象,因此读取
..
我正在尝试学习如何编写顶点着色器.在 Apple 的示例项目中,他们有一行设置 glUniform1f(uniforms[UNIFORM_TRANSLATE], (Glfloat)transY); 然后在 中使用这个值 //f 中传递的值//glUniform1f(uniforms[UNIFORM_TRANSLATE](Glfloat)transY);统一浮动平移;无效主(){gl_Pos
..
我正在使用lwjgl 3并学习现代的opengl(3).我想将统一矩阵发送到顶点着色器,以便我可以应用变换.我试过了,程序因该错误而崩溃 ##Java运行时环境检测到致命错误:##EXCEPTION_ACCESS_VIOLATION(0xc0000005)at pc = 0x0000000073a9820d,pid = 8644,tid = 2760##JRE版本:Java(TM)SE运行时环境
..
我正在阅读GLSL Cookbook,但是我正在使用C#进行编程,因此我试图使用OpenTK转换代码.我目前正在使用Phong Shading示例,并且可以使照明的原理正常工作,但是我使用的环面模型将不会渲染与相机相距Z距离大于1的任何元素 以下是正确渲染的示例(x旋转= 0,y旋转= 0,camera.z = 1,model.z = 0)环面渲染正确 在此应用X和Y旋转(x旋转= -
..
我想显示一个像在球体上但在飞机上的图像.此操作的一个示例是Mercatore投影,即从行星“展开"的地球地图.为了更好地说明自己,在球体上具有正方形纹理-不是在整个球体上,而是仅在一部分球上-我想在飞机上展示在球体上看到这种纹理的结果.我已经找到了:如何“包装"飞机在带有three.js的球面上? 但是我想使用着色器,因为它可能是最高效的,但也可能是最困难的.我很难找到合适的公式.有任何数学
..
我有一个顶点着色器(2.0)做一些实例化-每个顶点都指定一个数组索引. 如果我有一个像这样的数组: float instanceData[100]; 编译器为其分配100个常量寄存器.每个常量寄存器都是一个float4,因此它分配的空间是所需的4倍. 我需要一种方法,使其仅分配25个常量寄存器,并在每个常量寄存器中存储四个值. 理想情况下,我想要一种在CPU和GPU上仍
..
在HLSL中,有什么方法可以限制编译器使用的常量寄存器的数量吗? 具体地说,如果我有类似的东西: float4 foobar[300]; 在vs_2_0顶点着色器中,编译器将使用超过256个常量寄存器来轻松生成效果.但是,仅保证2.0顶点着色器可以访问256个常量寄存器,因此当我尝试使用该效果时,它在运行时会以晦涩且依赖于GPU的方式失败.我宁愿让它在编译时失败. 这个问题尤
..
我有一个场景,其中包含多个具有各自位置和旋转角度的模型.在给定法线的情况下,着色器将简单的双向照明应用于每个像素. 那是我的顶点着色器. #version 150 in vec3 position; in vec3 normal; in vec2 texcoord; out vec3 f_normal; out vec2 f_texcoord; uniform mat4 mode
..
代码演示问题 (注释/取消注释顶点着色器中的gl_Position行) var scene; var book; var shaderMaterial; var renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setClearCo
..
我有这个基本的着色器,尽管我遇到了一些麻烦,但确实困扰我! 虽然我使用片段着色器应用纹理,但是我移动或旋转了相机,但脸上的纹理将始终面向相机(我已经添加了GIF图像作为示例). 因此,您可以在上面的图像上看到,纹理始终面对相机,如果我移近一点,它也会保持其缩放比例. 我试图达到可以四处移动的目的,并且纹理将保持其位置,旋转和缩放根据面部和顶点,而不是像现在这样根据相机. 这
..
我想编写一个着色器,用于创建类似于用于Coverflow的图像的反射. // Vertex Shader uniform highp mat4 u_modelViewMatrix; uniform highp mat4 u_projectionMatrix; attribute highp vec4 a_position; attribute lowp vec4 a_color; attri
..
好吧我在 https://tympanus .net/codrops/2019/01/17/interactive-particles-with-three-js/只是想让他的自定义着色器正常工作.我引入了.frag和.vert文件(包含在链接中),并复制了他的设置.当我运行时出现错误 模块解析失败:意外的令牌(3:10)您可能需要一个 适当的加载程序来处理此文件类型. 这里:
..