Skip to content

Commit aa21687

Browse files
committed
Merge pull request tangrams#375 from tangrams/world-normal
World normals
2 parents 302da84 + 1025b32 commit aa21687

File tree

5 files changed

+19
-0
lines changed

5 files changed

+19
-0
lines changed

Diff for: core/resources/shaders/polygon.fs

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ uniform vec2 u_resolution;
1616
uniform float u_time;
1717
uniform float u_meters_per_pixel;
1818
uniform float u_device_pixel_ratio;
19+
uniform mat3 u_inverseNormalMatrix;
1920

2021
#pragma tangram: uniforms
2122

@@ -33,6 +34,10 @@ varying vec2 v_texcoord;
3334
#pragma tangram: lighting
3435
#pragma tangram: global
3536

37+
vec3 worldNormal() {
38+
return u_inverseNormalMatrix * v_normal;
39+
}
40+
3641
void main(void) {
3742

3843
// Initialize globals

Diff for: core/resources/shaders/polygon.vs

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ vec4 worldPosition() {
4343
return v_world_position;
4444
}
4545

46+
vec3 worldNormal() {
47+
return a_normal;
48+
}
49+
4650
#pragma tangram: material
4751
#pragma tangram: lighting
4852
#pragma tangram: global

Diff for: core/resources/shaders/polyline.fs

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ uniform mat4 u_model;
1010
uniform mat4 u_view;
1111
uniform mat4 u_proj;
1212
uniform mat3 u_normalMatrix;
13+
uniform mat3 u_inverseNormalMatrix;
1314
uniform vec3 u_map_position;
1415
uniform vec3 u_tile_origin;
1516
uniform vec2 u_resolution;
@@ -29,6 +30,10 @@ varying vec2 v_texcoord;
2930
varying vec4 v_lighting;
3031
#endif
3132

33+
vec3 worldNormal() {
34+
return u_inverseNormalMatrix * v_normal;
35+
}
36+
3237
#pragma tangram: material
3338
#pragma tangram: lighting
3439
#pragma tangram: global

Diff for: core/resources/shaders/polyline.vs

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ vec4 worldPosition() {
4343
return v_world_position;
4444
}
4545

46+
vec3 worldNormal() {
47+
return vec3(0.0, 0.0, 1.0);
48+
}
49+
4650
#pragma tangram: material
4751
#pragma tangram: lighting
4852
#pragma tangram: global

Diff for: core/src/style/style.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ void Style::onBeginDrawFrame(const View& _view, Scene& _scene, int _textureUnit)
184184
const auto& mapPos = _view.getPosition();
185185
m_shaderProgram->setUniformf("u_map_position", mapPos.x, mapPos.y, _view.getZoom());
186186
m_shaderProgram->setUniformMatrix3f("u_normalMatrix", glm::value_ptr(_view.getNormalMatrix()));
187+
m_shaderProgram->setUniformMatrix3f("u_inverseNormalMatrix", glm::value_ptr(glm::inverse(_view.getNormalMatrix())));
187188
m_shaderProgram->setUniformf("u_meters_per_pixel", 1.0 / _view.pixelsPerMeter());
188189
m_shaderProgram->setUniformMatrix4f("u_view", glm::value_ptr(_view.getViewMatrix()));
189190
m_shaderProgram->setUniformMatrix4f("u_proj", glm::value_ptr(_view.getProjectionMatrix()));

0 commit comments

Comments
 (0)