首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在三角形内使用参考颜色进行WebGL插值

在三角形内使用参考颜色进行WebGL插值
EN

Stack Overflow用户
提问于 2019-03-06 01:16:12
回答 1查看 631关注 0票数 3

使用regl,我试图用WebGL绘制一个三角形,我可以在三角形内的某个参考点上定义颜色,并使其他像素的颜色是它们到该点的距离的函数。

到目前为止,只有当此参考点是角点之一时,它才有效:

从拐角开始渐变

这是使用以下Vert和Frag着色器完成的:

代码语言:javascript
复制
  vert: `
  precision mediump float;
  uniform float scale;
  attribute vec2 position;
  attribute vec3 color;
  varying vec3 fcolor;
  void main () {
    fcolor = color;
    gl_Position = vec4(scale * position, 0, 1);
  }
  `,

  frag: `
  precision mediump float;
  varying vec3 fcolor;
  void main () {
    gl_FragColor = vec4(sqrt(fcolor), 1);
  }
  `,

  attributes: {
    position: [
      [1, 0],
      [0, 1],
      [-1, -1]
    ],

    color: [
      [1, 0, 0],
      [0, 1, 0],
      [0, 0, 1]
    ]
  },

  uniforms: {
    scale: regl.prop('scale')
  }

这里的参考点是1,0,0,1和-1,-1。对于相同的三角形,我如何将另一个参考点放在0,0处,例如白色?(这将在三角形内形成一个白色的“岛”)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 04:22:40

您必须定义两个uniform变量,一个用于参考点的坐标,另一个用于参考点的颜色:

代码语言:javascript
复制
uniforms: {
    scale: regl.prop('scale'),
    refPoint: [0, 0],
    refColor: [1, 1, 1]
}

通过varying变量将顶点坐标从顶点着色器传递到片段着色器:

代码语言:javascript
复制
precision mediump float;

uniform float scale;

attribute vec2 position;
attribute vec3 color;

varying vec2 fpos;
varying vec3 fcolor;

void main()
{
    fpos        = position;
    fcolor      = color;
    gl_Position = vec4(scale * position, 0, 1);
}

通过distance计算从参考点到片段着色器中插值位置的距离:

代码语言:javascript
复制
float dist = distance(refPoint, fpos);

根据距离对颜色进行插值,由mix编写

代码语言:javascript
复制
vec3 micColor = mix(refColor, fcolor, dist);

片段着色器:

代码语言:javascript
复制
precision mediump float;

uniform vec2 refPoint;
uniform vec3 refColor;

varying vec2 fpos;
varying vec3 fcolor;

void main()
{
    float dist    = distance(refPoint, fpos);
    vec3 micColor = mix(refColor, fcolor, dist);
    gl_FragColor  = vec4(sqrt(micColor), 1);
}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55008236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档