美文网首页OpenGL学习笔记
【五十一,多光源-01基础】

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

作者: Woodlouse | 来源:发表于2019-12-24 22:00 被阅读0次

多光源

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

  • 冯氏光照模型(Phong shading)
  • 光照材质(Materials)
  • 光照图(Lighting maps)
  • 投光物(Light casters)

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

  • 一个类似阳光的平行光(Directional light)
  • 4个定点光(Point lights)
  • 一个手电筒(Flashlight)

要在场景中使用多光源需要封装一些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);
} 

相关文章

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

    多光源 前几节学习了光照相关的知识: 冯氏光照模型(Phong shading) 光照材质(Materials) ...

  • LearnOpenGL 多光源

    我们在前面的教程中已经学习了许多关于OpenGL 光照的知识,其中包括冯氏照明模型(Phong shading)、...

  • THREE.js中的光源

    THREE中的光源包含多种其中基础光源有4种 特殊光源有3种(这三种我们后面再详述) ambientLight 环...

  • 实时渲染、三种渲染方法介绍

    实时渲染,一般有三种渲染方法,多光源一次渲染,多光源多次渲染和延迟着色。 多光源一次渲染:对于每个物体,计算所有光...

  • 打卡Day04《发现不一样的自己》零基础学画画

    依旧练习画圆,扎实基础理论 寻找光源,调和阴影。

  • OpenGL光源光照基础

    光照模型 在OpenGL光照模型中,除非一个物体自己会发光,否则它将受到3种不同类型的光的照射:环境光(ambie...

  • Ⅰ标准光照模型

    标准光照模型 基础概念 光源 光源 在实时渲染中我们通常把光源当做一个没有体积的点,用 l 来表示它的方向 辐照度...

  • URP多光源处理

    URP多光源处理 该节我们将实现在URP下接收多个光照 本系列URP不再阐述具体的效果实现逻辑与公式推导,侧重于U...

  • 中国首创单光子源 它究竟有何妙处?

    光源是当前世界科技领域的一个基础性研究大项,光源研究重在光源强度、精度等方面寻求新的突破,而一旦有所突破,那么这些...

  • 2022-10-14 聚光灯

    一、原理 1.在点光源的基础上,当ϕ>θ时,渲染光照效果2.需要多传入一个spotDir和cos(θ)值;3.co...

网友评论

    本文标题:【五十一,多光源-01基础】

    本文链接:https://www.haomeiwen.com/subject/xrtqoctx.html