OpenGL学习笔记

【五十一,多光源-01基础】

2019-12-24  本文已影响0人  Woodlouse

多光源

前几节学习了光照相关的知识:

在多光源中,要创建一个包含六个光源的场景:

要在场景中使用多光源需要封装一些GLSL函数用来计算光照,GLSL中的函数与C语言的相似,它需要:

多光源计算的一帮方式
创建一个输出颜色的向量,每个光源都对输出颜色贡献一些颜色,场景中的每个光源进行独立运算,并且运算结果都对最终的输出颜色有一定影响,函数的一般结构如下:

out vec4 color;

void main()
{
  // 定义输出颜色
  vec3 output;
  // 将平行光的运算结果颜色添加到输出颜色
  output += someFunctionToCalculateDirectionalLight();
  // 同样,将定点光的运算结果颜色添加到输出颜色
  for(int i = 0; i < nr_of_point_lights; i++)
    output += someFunctionToCalculatePointLight();
  // 添加其他光源的计算结果颜色(如投射光)
  output += someFunctionToCalculateSpotLight();

  color = vec4(output, 1.0);
} 
上一篇下一篇

猜你喜欢

热点阅读