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, "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
|
||||
mat4 transformLights;
|
||||
vec3 lightScale = {0.1, 0.1, 0.1};
|
||||
scaling(&transformLights, &lightScale);
|
||||
translate(&transformLights, &transformLights, (vec3*)&lightPosition);
|
||||
translate(&transformLights, &transformLights, (vec3*)&lightPosition1);
|
||||
|
||||
SceneNode* light = findNodeByName("Light1", rootNode);
|
||||
light->transformation = transformLights;
|
||||
|
@ -319,10 +320,11 @@ void draw(void) {
|
|||
updateSceneNode(light, &rootNode->worldTransformation);
|
||||
|
||||
// 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[1]"), -lightPosition.x, lightPosition.y, -lightPosition.z);
|
||||
glUniform3f(glGetUniformLocation(program, "lightPositions[0]"), lightPosition1.x, lightPosition1.y, lightPosition1.z);
|
||||
glUniform3f(glGetUniformLocation(program, "lightPositions[1]"), lightPosition2.x, lightPosition2.y, lightPosition2.z);
|
||||
|
||||
glUniform1f(glGetUniformLocation(program, "lightBrightness[0]"), 0.5f);
|
||||
glUniform1f(glGetUniformLocation(program, "lightBrightness[1]"), 0.5f);
|
||||
|
|
Loading…
Reference in New Issue