Skip to content

Commit

Permalink
player: basic three-point light setup.
Browse files Browse the repository at this point in the history
  • Loading branch information
mosra committed Sep 6, 2018
1 parent b6c14be commit 7f70879
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions src/player/Player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,10 @@ class Player: public Platform::Application {

void addObject(Trade::AbstractImporter& importer, Containers::ArrayView<Object3D*> objects, Containers::ArrayView<const Containers::Optional<Trade::PhongMaterialData>> materials, Object3D& parent, UnsignedInt i);

Shaders::Phong _coloredShader;
Shaders::Phong _coloredShader{{}, 3};
Shaders::Phong _texturedShader{
Shaders::Phong::Flag::DiffuseTexture|
Shaders::Phong::Flag::AlphaMask}; /** @todo remove once I have OIT */
Shaders::Phong::Flag::AlphaMask, 3}; /** @todo remove once I have OIT */

PluginManager::Manager<Trade::AbstractImporter> _manager;

Expand Down Expand Up @@ -440,7 +440,12 @@ void Player::addObject(Trade::AbstractImporter& importer, Containers::ArrayView<
void ColoredDrawable::draw(const Matrix4& transformationMatrix, SceneGraph::Camera3D& camera) {
_shader
.setDiffuseColor(_color)
.setLightPosition(camera.cameraMatrix().transformPoint({-3.0f, 10.0f, 10.0f}))
.setLightPositions({
/** @todo make this configurable, deduplicate and calculate only once */
camera.cameraMatrix().transformPoint(Vector3{10.0f, 10.0f, 10.0f}*100.0f),
camera.cameraMatrix().transformPoint(Vector3{-5.0f, -5.0f, 10.0f}*100.0f),
camera.cameraMatrix().transformPoint(Vector3{0.0f, 10.0f, -10.0f}*100.0f)})
.setLightColors({0xffffff_rgbf, 0xff9999_rgbf, 0x9999ff_rgbf})
.setTransformationMatrix(transformationMatrix)
.setNormalMatrix(transformationMatrix.rotationScaling())
.setProjectionMatrix(camera.projectionMatrix());
Expand All @@ -450,7 +455,12 @@ void ColoredDrawable::draw(const Matrix4& transformationMatrix, SceneGraph::Came

void TexturedDrawable::draw(const Matrix4& transformationMatrix, SceneGraph::Camera3D& camera) {
_shader
.setLightPosition(camera.cameraMatrix().transformPoint({-3.0f, 10.0f, 10.0f}))
.setLightPositions({
/** @todo make this configurable, deduplicate and calculate only once */
camera.cameraMatrix().transformPoint(Vector3{10.0f, 10.0f, 10.0f}*100.0f),
camera.cameraMatrix().transformPoint(Vector3{-5.0f, -5.0f, 10.0f}*100.0f),
camera.cameraMatrix().transformPoint(Vector3{0.0f, 30.0f, -10.0f}*100.0f)})
.setLightColors({0xffffff_rgbf, 0xff9999_rgbf, 0x9999ff_rgbf})
.setTransformationMatrix(transformationMatrix)
.setNormalMatrix(transformationMatrix.rotationScaling())
.setProjectionMatrix(camera.projectionMatrix())
Expand Down

0 comments on commit 7f70879

Please sign in to comment.