shader-school的渲染入门系列(二)

题目是vertex shader的VARYING VARIABLES,当时在网上搜索了不少资料,用线性插值的方法过了。

=_=线性插值的做法可以理解为,一根直线上,颜色的rgb值由点的位置计算得出。
一个三角形内,简单一点的理解,点的rgb值由点与三个顶点连接的各个三角形面积得出。

代码如下:
vertex.glsl

precision highp float;

attribute vec4 position;
attribute vec3 color;
varying vec4 fragPosition;
void main() {
  gl_Position = position;
  fragPosition= position;
}

fragment.glsl

precision highp float;
varying vec4 fragPosition;
void main() {
  float R= fragPosition.y+0.5;
  float G= 0.5*(0.5-2.0*fragPosition.x-fragPosition.y);
  //原本fragPosition.x系数是1.0,根据调试结果修改成2.0通过
  float B= 0.5*(0.5+2.0*fragPosition.x-fragPosition.y);
  gl_FragColor = vec4(R,G,B,1);
}

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章