OpenGL["noël"]

OpenGL["noël"]

  • Intro et SDK
  • Bronze
  • Silver
  • Gold
  • Blog
  • OpenGL Documentation
  • OpenGL Wiki
  • GitHub
  • My glTF Viewer Tutorial

›Put the lights on !

3D - La théorie

  • Introduction
  • La Normal Matrix
  • Un exemple de Vertex Shader pour la 3D
  • La bibliothèque glm

3D - La pratique

  • Introduction
  • Les classes Sphere et Cone
  • Dessiner une sphere
  • Dessiner une lune
  • Dessiner la terre
  • Multi-texturing
  • Utiliser plusieurs shaders

Gestion de la caméra

  • Introduction
  • Trackball Camera
  • Freefly Camera

Put the lights on !

  • Introduction
  • Directional Light
  • Point Light
  • Aller plus loin

Projet(s)

  • Projet: IM(A)ineCraft

Point Light

Une lumière ponctuelle éclaire depuis une position donnée.

Ce type de lumière sera donc définit par deux propriétés: sa position (vecteur 3D) et son intensité (couleur).

Créez un nouveau fragment shader sur le modèle du précédent. Appelez le pointlight.fs.glsl.

Remplacez la variable uniforme uLightDir_vs par uLightPos_vs.

Il faut modifier la fonction blinnPhong. Tout d'abord le vecteur \(\omega_i)\) doit maintenant être calculé à partir de la position du fragment et de la position de la lumière (normalize(uLightPos_vs - vPosition_vs)). De plus \(L_i\) doit s'atténuer en fonction de la distance \(d\) à la lumière. On utilise généralement une atténuation quadratique (uLightIntensity / (d * d)). Pour calculer la distance vous pouvez utiliser la fonction GLSL du même nom.

Adaptez le code C++ pour envoyer au shader une lumière ponctuelle plutot que directionnelle. Il faut multiplier la position par la View Matrix avant de l'envoyer. N'oubliez pas également de changer le chargement du shader.

Faites en sorte que la lumière se déplace en spirale dans la scène (appliquez à sa position une rotation et un scale dépendant du temps). L'objectif est de constater que la lumière ponctuelle affecte plus fortement les objets proches.

← Directional LightAller plus loin →
OpenGL["noël"]
About Me
Personal websiteGithub
About This Website
BlogopenglnoelPowered by Docusaurus
About OpenGL
Documentation (docs.gl)Wiki
Copyright © 2021 Laurent NOEL