Opengl es 使用'时出错/';具有球体材质属性和浮动(glsl)的运算符

Opengl es 使用'时出错/';具有球体材质属性和浮动(glsl)的运算符,opengl-es,glsl,webgl,fragment-shader,Opengl Es,Glsl,Webgl,Fragment Shader,我正在片段着色器中为球体实现简单的光线跟踪。在这一点上,我目前正在为漫射着色球体计算颜色的函数工作。我遇到的问题是,我试图使用以下等式计算曲面点的法向量:N=(S-sph.xyz)/sph.r 然而,当我尝试将其转换为glsl时,我得到的错误是这些操作数不能与“/”运算符一起使用(即 除了修复这个明显的错误外,我甚至不知道如何构造这个函数来对正在渲染的球体进行扩散着色,因此对此的任何指导都将非常感谢。下面是函数的代码(可能有很多错误): 嗯,错误是你的material/5。你把一个向量除以一个整

我正在片段着色器中为球体实现简单的光线跟踪。在这一点上,我目前正在为漫射着色球体计算颜色的函数工作。我遇到的问题是,我试图使用以下等式计算曲面点的法向量:N=(S-sph.xyz)/sph.r 然而,当我尝试将其转换为glsl时,我得到的错误是这些操作数不能与“/”运算符一起使用(即

除了修复这个明显的错误外,我甚至不知道如何构造这个函数来对正在渲染的球体进行扩散着色,因此对此的任何指导都将非常感谢。下面是函数的代码(可能有很多错误):


嗯,错误是你的
material/5
。你把一个向量除以一个整数,然后把它赋给一个浮点。你可能需要
vec3 ambient=material/5.0;
来进行正确的类型和计算。

谢谢你的回答,它似乎解决了这个错误!我在帖子中提出了问题的第二部分。我刚刚把它放了出来在一个新的问题中,您认为您能提供帮助吗?错误消息准确地说明了问题所在。
不存在接受“mediump 3分量浮点向量”类型的左侧操作数和“const int”类型的右侧操作数的操作“/”(或者没有可接受的转换)
错误中的右边写着没有“/”可以与左边的vec3和右边的int一起工作。@gman提供的答案实际上解决了问题,我只是更改了帖子的名称,以便有相同问题的人更容易找到它。是的。我只是指出你是否真的读过错误消息您可能已经猜到了。该消息没有任何含糊不清的地方。
material
是一个
3分量向量或float
5
是一个
const int
。错误消息说您不能这样做。您的帖子让人觉得您好像没有阅读该消息,只是在堆栈溢出上吐出了一个问题w、 我不是说事情就是这样。也许你不理解错误信息。但是,错误信息实际上就是答案。
ERROR: 0:37: '/' :  wrong operand types  no operation '/' exists that takes a left-hand operand of type 'in mediump 3-component vector of float' and a right operand of type 'const int' (or there is no acceptable conversion) )
vec3 shadeSphere(vec3 point, vec4 sphere, vec3 material) {
      vec3 color = vec3(1.,2.,3.);
      vec3 N = (point - sphere.xyz) / sphere.w;
      float diffuse = max(dot(Ldir, N), 0.0);
      float ambient = material/5;
      color = ambient   + Lrgb * diffuse *  max(0, N * Ldir);
      return color;
   }