fix light positions
This commit is contained in:
parent
ba1d6b1b18
commit
a1e8e465a5
12
src/main.c
12
src/main.c
|
@ -299,13 +299,14 @@ void draw(void) {
|
||||||
glUniform4f(glGetUniformLocation(program, "lightColor"), 0.2f, 0.2f, 0.2f, 0.5f);
|
glUniform4f(glGetUniformLocation(program, "lightColor"), 0.2f, 0.2f, 0.2f, 0.5f);
|
||||||
glUniform4f(glGetUniformLocation(program, "ambientLight"), 0.05f, 0.05f, 0.05f, 1.0f);
|
glUniform4f(glGetUniformLocation(program, "ambientLight"), 0.05f, 0.05f, 0.05f, 1.0f);
|
||||||
|
|
||||||
vec4 lightPosition = {cos(stepi) * 5.0f, 5.0f, sin(stepi) * 5.0f, 1.0f};
|
vec4 lightPosition1 = {cos(stepi) * 5.0f, 5.0f, sin(stepi) * 5.0f, 1.0f};
|
||||||
|
vec4 lightPosition2 = {-cos(stepi) * 5.0f, 5.0f, -sin(stepi) * 5.0f, 1.0f};
|
||||||
|
|
||||||
// move cubes to light positions
|
// move cubes to light positions
|
||||||
mat4 transformLights;
|
mat4 transformLights;
|
||||||
vec3 lightScale = {0.1, 0.1, 0.1};
|
vec3 lightScale = {0.1, 0.1, 0.1};
|
||||||
scaling(&transformLights, &lightScale);
|
scaling(&transformLights, &lightScale);
|
||||||
translate(&transformLights, &transformLights, (vec3*)&lightPosition);
|
translate(&transformLights, &transformLights, (vec3*)&lightPosition1);
|
||||||
|
|
||||||
SceneNode* light = findNodeByName("Light1", rootNode);
|
SceneNode* light = findNodeByName("Light1", rootNode);
|
||||||
light->transformation = transformLights;
|
light->transformation = transformLights;
|
||||||
|
@ -319,10 +320,11 @@ void draw(void) {
|
||||||
updateSceneNode(light, &rootNode->worldTransformation);
|
updateSceneNode(light, &rootNode->worldTransformation);
|
||||||
|
|
||||||
// apply viewing transformation and pass light positions to shader
|
// apply viewing transformation and pass light positions to shader
|
||||||
multiplyAny((GLfloat*)&lightPosition, (GLfloat*)&viewingTransformation, (GLfloat*)&lightPosition, 4, 4, 1);
|
multiplyAny((GLfloat*)&lightPosition1, (GLfloat*)&viewingTransformation, (GLfloat*)&lightPosition1, 4, 4, 1);
|
||||||
|
multiplyAny((GLfloat*)&lightPosition2, (GLfloat*)&viewingTransformation, (GLfloat*)&lightPosition2, 4, 4, 1);
|
||||||
|
|
||||||
glUniform3f(glGetUniformLocation(program, "lightPositions[0]"), lightPosition.x, lightPosition.y, lightPosition.z);
|
glUniform3f(glGetUniformLocation(program, "lightPositions[0]"), lightPosition1.x, lightPosition1.y, lightPosition1.z);
|
||||||
glUniform3f(glGetUniformLocation(program, "lightPositions[1]"), -lightPosition.x, lightPosition.y, -lightPosition.z);
|
glUniform3f(glGetUniformLocation(program, "lightPositions[1]"), lightPosition2.x, lightPosition2.y, lightPosition2.z);
|
||||||
|
|
||||||
glUniform1f(glGetUniformLocation(program, "lightBrightness[0]"), 0.5f);
|
glUniform1f(glGetUniformLocation(program, "lightBrightness[0]"), 0.5f);
|
||||||
glUniform1f(glGetUniformLocation(program, "lightBrightness[1]"), 0.5f);
|
glUniform1f(glGetUniformLocation(program, "lightBrightness[1]"), 0.5f);
|
||||||
|
|
Loading…
Reference in New Issue