From 43ef4c518d2e72d20ab2d6b9d6fc5c49747caee0 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sat, 24 Apr 2021 19:29:31 +0300 Subject: [PATCH] improved different texture type selection for lighting --- lightSample.cpp | 21 ++--- material.cpp | 6 +- particleEmitterSample.cpp | 60 +++++++++++++++ samples/models/platform.vb | 143 +++++++++++++++++++++++++++++++++++ samples/textures/smoke00.png | Bin 0 -> 13059 bytes samples/textures/smoke01.png | Bin 0 -> 14423 bytes samples/textures/smoke02.png | Bin 0 -> 11775 bytes samples/textures/smoke03.png | Bin 0 -> 14413 bytes samples/textures/smoke04.png | Bin 0 -> 13546 bytes samples/textures/smoke05.png | Bin 0 -> 14323 bytes texture.frag | 4 +- 11 files changed, 221 insertions(+), 13 deletions(-) create mode 100644 particleEmitterSample.cpp create mode 100644 samples/models/platform.vb create mode 100755 samples/textures/smoke00.png create mode 100755 samples/textures/smoke01.png create mode 100755 samples/textures/smoke02.png create mode 100755 samples/textures/smoke03.png create mode 100755 samples/textures/smoke04.png create mode 100755 samples/textures/smoke05.png diff --git a/lightSample.cpp b/lightSample.cpp index 7d70df3..f8ad059 100644 --- a/lightSample.cpp +++ b/lightSample.cpp @@ -3,6 +3,7 @@ #include "material.h" #include "node.h" #include "light.h" +#include "model.h" #include "animation.h" #include "animationController.h" #include "animationChannel.h" @@ -27,29 +28,31 @@ int main(){ Node *rootNode = root->getRootNode(); Camera *cam = root->getCamera(); - cam->setPosition(Vector3(0, 1, 1) * 30); + cam->setPosition(Vector3(0, 1, 1) * 20); cam->lookAt(Vector3(0, -1, -1).norm(), Vector3(0, 1, -1).norm()); - Box *box = new Box(Vector3(20, 1, 20)); - Node *boxNode = new Node(); + Model *box = new Model(MODEL_PATH + "platform.vb"); Material *mat = new Material(); mat->setTexturingEnabled(true); mat->setLightingEnabled(true); - string images[] = {TEX_PATH + "bricks.jpg"}; - Texture *texture = new Texture(images, 1); - mat->addDiffuseMap(texture); + mat->setNormalMapEnabled(true); + string im0[] = {TEX_PATH + "bricks.jpg"}; + string im1[] = {TEX_PATH + "bricksNormal.jpg"}; + Texture *diffuseTex = new Texture(im0, 1); + mat->addDiffuseMap(diffuseTex); + Texture *normalTex = new Texture(im1, 1, Texture::NORMAL); + mat->addNormalMap(normalTex); box->setMaterial(mat); - boxNode->attachMesh(box); - rootNode->attachChild(boxNode); + rootNode->attachChild(box); Light *light = new Light(Light::SPOT); light->setColor(Vector3(1, 1, 1)); Node *lightNode = new Node(Vector3::VEC_ZERO, Quaternion::QUAT_W, Vector3::VEC_IJK, "", new AnimationController()); lightNode->addLight(light); rootNode->attachChild(lightNode); - lightNode->setOrientation(Quaternion(1.57, Vector3(1, 0, 0))); + lightNode->setOrientation(Quaternion(1.2, Vector3(1, 0, 0))); lightNode->setPosition(Vector3(0, 5, 0)); KeyframeChannel kcA; diff --git a/material.cpp b/material.cpp index a914d80..b5a2857 100755 --- a/material.cpp +++ b/material.cpp @@ -96,8 +96,8 @@ namespace vb01{ shader->setBool(lightingEnabled, "lightingEnabled"); shader->setBool(normalMapEnabled, "normalMapEnabled"); for(int i = 0; i < 4; i++){ - shader->setInt(TEXTURE_SLOTS[i], "textures[" + to_string(TEXTURE_SLOTS[i]) + "].pastTexture"); - shader->setInt(TEXTURE_SLOTS[i] + 1, "textures[" + to_string(TEXTURE_SLOTS[i]) + "].nextTexture"); + shader->setInt(TEXTURE_SLOTS[i], "textures[" + to_string(i) + "].pastTexture"); + shader->setInt(TEXTURE_SLOTS[i] + 1, "textures[" + to_string(i) + "].nextTexture"); } shader->setInt(TEXTURE_SLOTS[4], "environmentMap"); } @@ -121,7 +121,7 @@ namespace vb01{ for(Texture *t : textures){ int id = t->getTextureTypeId() * 2; - shader->setBool(t->getNumFrames() > 0, "textures[" + to_string(id) + "].animated"); + shader->setBool(t->getNumFrames() > 1, "textures[" + to_string(id) + "].animated"); shader->setFloat(t->getMixRatio(), "textures[" + to_string(id) + "].mixRatio"); t->update(id); } diff --git a/particleEmitterSample.cpp b/particleEmitterSample.cpp new file mode 100644 index 0000000..d889cac --- /dev/null +++ b/particleEmitterSample.cpp @@ -0,0 +1,60 @@ +#include "root.h" +#include "node.h" +#include "particleEmitter.h" +#include "material.h" +#include "texture.h" +#include "animation.h" +#include "animationController.h" +#include "animationChannel.h" + +using namespace std; +using namespace vb01; + +int main(){ + const string PATH = "../", TEX_PATH = PATH + "samples/textures/", MODEL_PATH = PATH + "samples/models/"; + string skyboxTextures[] = { + TEX_PATH + "top.jpg", + TEX_PATH + "bottom.jpg", + TEX_PATH + "left.jpg", + TEX_PATH + "right.jpg", + TEX_PATH + "front.jpg", + TEX_PATH + "back.jpg" + }; + + Root *root = Root::getSingleton(); + root->start(800, 600, PATH, "Particle emitter sample"); + root->createSkybox(skyboxTextures); + Node *rootNode = root->getRootNode(); + + Camera *cam = root->getCamera(); + cam->setPosition(Vector3(0, 0, 1) * 1); + cam->lookAt(Vector3(0, 0, -1).norm(), Vector3(0, 1, 0).norm()); + + ParticleEmitter *emitter = new ParticleEmitter(1); + Node *emitterNode = new Node(Vector3::VEC_ZERO, Quaternion::QUAT_W, Vector3::VEC_IJK, "", new AnimationController()); + + Material *mat = new Material(Material::MATERIAL_PARTICLE); + mat->setTexturingEnabled(true); + mat->setLightingEnabled(false); + string images[] = {TEX_PATH + "smoke00.png"}; + Texture *texture = new Texture(images, 1); + mat->addDiffuseMap(texture); + + emitter->setMaterial(mat); + emitter->setStartColor(Vector4(1, 1, 1, 1)); + emitter->setEndColor(Vector4(1, 0, 1, 1)); + emitter->setStartSize(Vector2(1, 1) * .1); + emitter->setEndSize(Vector2(1, 1) * .1); + emitter->setLowLife(.3); + emitter->setHighLife(.4); + emitter->setSpeed(.01); + emitter->setSpread(360); + + emitterNode->attachParticleEmitter(emitter); + rootNode->attachChild(emitterNode); + emitterNode->setOrientation(Quaternion(-1.57, Vector3(1, 0, 0))); + + while(true) + root->update(); + return 0; +} diff --git a/samples/models/platform.vb b/samples/models/platform.vb new file mode 100644 index 0000000..9f468c2 --- /dev/null +++ b/samples/models/platform.vb @@ -0,0 +1,143 @@ +{ +MESH: Cube +pos: 0.0 0.0 0.0 +rot: 1.0 0.0 0.0 -0.0 +scale: 1.0 1.0 1.0 +parent: - +skeleton: - +numElements: 20 36 0 0 +groups: +vertices: +9.375428199768066 9.375428199768066 1.0 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 +10.0 10.0 -1.0 0.5773491859436035 0.5773491859436035 -0.5773491859436035 +9.375428199768066 -9.375428199768066 1.0 -0.5773491859436035 0.5773491859436035 0.5773491859436035 +10.0 -10.0 -1.0 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 +-9.375428199768066 9.375428199768066 1.0 0.5773491859436035 -0.5773491859436035 0.5773491859436035 +-10.0 10.0 -1.0 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 +-9.375428199768066 -9.375428199768066 1.0 0.5773491859436035 0.5773491859436035 0.5773491859436035 +-10.0 -10.0 -1.0 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 +10.0 -10.0 1.0 0.7070833444595337 -0.7070833444595337 0.0 +-10.0 -10.0 1.0 -0.7070833444595337 -0.7070833444595337 0.0 +10.0 10.0 1.0 0.7070833444595337 0.7070833444595337 0.0 +-10.0 10.0 1.0 -0.7070833444595337 0.7070833444595337 0.0 +10.0 -10.0 2.5973665714263916 0.5773491859436035 -0.5773491859436035 0.5773491859436035 +-10.0 -10.0 2.5973665714263916 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 +10.0 10.0 2.5973665714263916 0.5773491859436035 0.5773491859436035 0.5773491859436035 +-10.0 10.0 2.5973665714263916 -0.5773491859436035 0.5773491859436035 0.5773491859436035 +9.375428199768066 -9.375428199768066 2.5973665714263916 -0.3014923632144928 0.3014923632144928 0.904507577419281 +-9.375428199768066 -9.375428199768066 2.5973665714263916 0.3014923632144928 0.3014923632144928 0.904507577419281 +9.375428199768066 9.375428199768066 2.5973665714263916 -0.3014923632144928 -0.3014923632144928 0.904507577419281 +-9.375428199768066 9.375428199768066 2.5973665714263916 0.3014923632144928 -0.3014923632144928 0.904507577419281 +faces: +4 0.9604101181030273 0.0 -1.0 0.0 0.0 0.0 -1.0 0.0 +2 0.4956846237182617 0.4647254943847656 -1.0 0.0 0.0 0.0 -1.0 0.0 +0 0.4956846237182617 0.0 -1.0 0.0 0.0 0.0 -1.0 0.0 +8 0.5352740287780762 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +7 0.5848426818847656 0.4647254943847656 0.0 0.0 -1.0 1.0 0.0 0.0 +3 0.5848426818847656 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +9 0.6244320869445801 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +5 0.6740007400512695 0.4647254943847656 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +7 0.6740007400512695 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +1 0.4956846237182617 0.0 1.0 0.0 0.0 0.0 -1.0 0.0 +7 0.0 0.4956846237182617 1.0 0.0 0.0 0.0 -1.0 0.0 +5 0.0 0.0 1.0 0.0 0.0 0.0 -1.0 0.0 +10 0.713590145111084 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +3 0.7631587982177734 0.4647254943847656 0.0 0.0 -1.0 -0.0 1.0 0.0 +1 0.7631587982177734 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +11 0.8027482032775879 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +1 0.8523168563842773 0.4647254943847656 0.0 0.0 -1.0 -1.0 0.0 0.0 +5 0.8523168563842773 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +9 0.6244320869445801 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +15 0.5848426818847656 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.0 -0.9999999403953552 -0.0 +11 0.6244320869445801 0.4647254943847656 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +2 0.8919060230255127 0.9294509887695312 0.0 0.0 -1.0 -0.0 -0.9999999403953552 -0.0 +18 0.8523166179656982 0.4647254943847656 0.0 0.0 -1.0 -0.0 -0.9999999403953552 -0.0 +0 0.8919060230255127 0.4647254943847656 0.0 0.0 -1.0 -0.0 -0.9999999403953552 -0.0 +0 0.9314956665039062 0.9294509887695312 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +19 0.8919062614440918 0.4647254943847656 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +4 0.9314956665039062 0.4647254943847656 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +8 0.5352740287780762 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +13 0.4956846237182617 0.4647254943847656 0.0 0.0 -0.9999999403953552 0.9999999403953552 0.0 0.0 +9 0.5352740287780762 0.4647254943847656 0.0 0.0 -1.0 1.0 0.0 0.0 +17 0.4802055358886719 0.9758901596069336 -1.0 -1.4785427993047051e-05 0.0 1.4785427993047051e-05 -1.0 0.0 +12 0.0 0.9913692474365234 -1.0 1.4343298062158283e-05 0.0 -1.4343298062158283e-05 -1.0 0.0 +16 0.015479087829589844 0.9758901596069336 -1.0 1.3944924830866512e-05 0.0 -1.3944924830866512e-05 -1.0 0.0 +16 0.015479087829589844 0.9758901596069336 -1.0 1.3944924830866512e-05 0.0 -1.3944924830866512e-05 -1.0 0.0 +14 0.0 0.4956846237182617 -1.0 -1.3590316484624054e-05 0.0 1.3590316484624054e-05 -1.0 0.0 +18 0.01548004150390625 0.5111637115478516 -1.0 -1.4771365385968238e-05 0.0 1.4771365385968238e-05 -1.0 0.0 +19 0.4802055358886719 0.511164665222168 -1.0 -1.5412135326187126e-05 0.0 1.5412135326187126e-05 -1.0 0.0 +13 0.4956846237182617 0.9913692474365234 -0.9999999403953552 -1.4854152141197119e-05 0.0 1.4854152141197119e-05 -0.9999999403953552 0.0 +17 0.4802055358886719 0.9758901596069336 -1.0 -1.4785427993047051e-05 0.0 1.4785427993047051e-05 -1.0 0.0 +18 0.01548004150390625 0.5111637115478516 -1.0 -1.4771365385968238e-05 0.0 1.4771365385968238e-05 -1.0 0.0 +15 0.4956846237182617 0.4956846237182617 -0.9999999403953552 -1.54771696543321e-05 0.0 1.54771696543321e-05 -0.9999999403953552 0.0 +19 0.4802055358886719 0.511164665222168 -1.0 -1.5412135326187126e-05 0.0 1.5412135326187126e-05 -1.0 0.0 +10 0.713590145111084 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +12 0.6740007400512695 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.0 0.9999999403953552 0.0 +8 0.713590145111084 0.4647254943847656 0.0 0.0 -1.0 -0.0 1.0 0.0 +4 0.9710850715637207 0.9294509887695312 0.0 0.0 -1.0 -0.0 0.9999999403953552 0.0 +17 0.9314956665039062 0.4647254943847656 0.0 0.0 -1.0 -0.0 0.9999999403953552 0.0 +6 0.9710850715637207 0.4647254943847656 0.0 0.0 -1.0 -0.0 0.9999999403953552 0.0 +6 0.9999997615814209 0.4647254943847656 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +16 0.9604103565216064 0.0 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +2 0.9999997615814209 0.0 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +11 0.8027482032775879 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +14 0.7631587982177734 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.9999999403953552 0.0 0.0 +10 0.8027482032775879 0.4647254943847656 0.0 0.0 -1.0 -1.0 0.0 0.0 +4 0.9604101181030273 0.0 -1.0 0.0 0.0 0.0 -1.0 0.0 +6 0.9604101181030273 0.4647254943847656 -1.0 0.0 0.0 0.0 -1.0 0.0 +2 0.4956846237182617 0.4647254943847656 -1.0 0.0 0.0 0.0 -1.0 0.0 +8 0.5352740287780762 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +9 0.5352740287780762 0.4647254943847656 0.0 0.0 -1.0 1.0 0.0 0.0 +7 0.5848426818847656 0.4647254943847656 0.0 0.0 -1.0 1.0 0.0 0.0 +9 0.6244320869445801 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +11 0.6244320869445801 0.4647254943847656 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +5 0.6740007400512695 0.4647254943847656 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +1 0.4956846237182617 0.0 1.0 0.0 0.0 0.0 -1.0 0.0 +3 0.4956846237182617 0.4956846237182617 1.0 0.0 0.0 0.0 -1.0 0.0 +7 0.0 0.4956846237182617 1.0 0.0 0.0 0.0 -1.0 0.0 +10 0.713590145111084 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +8 0.713590145111084 0.4647254943847656 0.0 0.0 -1.0 -0.0 1.0 0.0 +3 0.7631587982177734 0.4647254943847656 0.0 0.0 -1.0 -0.0 1.0 0.0 +11 0.8027482032775879 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +10 0.8027482032775879 0.4647254943847656 0.0 0.0 -1.0 -1.0 0.0 0.0 +1 0.8523168563842773 0.4647254943847656 0.0 0.0 -1.0 -1.0 0.0 0.0 +9 0.6244320869445801 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +13 0.5848426818847656 0.9604101181030273 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +15 0.5848426818847656 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.0 -0.9999999403953552 -0.0 +2 0.8919060230255127 0.9294509887695312 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +16 0.8523166179656982 0.9294509887695312 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +18 0.8523166179656982 0.4647254943847656 0.0 0.0 -1.0 -0.0 -1.0 -0.0 +0 0.9314956665039062 0.9294509887695312 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +18 0.8919062614440918 0.9294509887695312 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +19 0.8919062614440918 0.4647254943847656 0.0 0.0 -1.0 0.9999999403953552 0.0 0.0 +8 0.5352740287780762 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +12 0.4956846237182617 0.9604101181030273 0.0 0.0 -1.0 1.0 0.0 0.0 +13 0.4956846237182617 0.4647254943847656 0.0 0.0 -0.9999999403953552 0.9999999403953552 0.0 0.0 +17 0.4802055358886719 0.9758901596069336 -1.0 -1.4785427993047051e-05 0.0 1.4785427993047051e-05 -1.0 0.0 +13 0.4956846237182617 0.9913692474365234 -0.9999999403953552 -1.4854152141197119e-05 0.0 1.4854152141197119e-05 -0.9999999403953552 0.0 +12 0.0 0.9913692474365234 -1.0 1.4343298062158283e-05 0.0 -1.4343298062158283e-05 -1.0 0.0 +16 0.015479087829589844 0.9758901596069336 -1.0 1.3944924830866512e-05 0.0 -1.3944924830866512e-05 -1.0 0.0 +12 0.0 0.9913692474365234 -1.0 1.4343298062158283e-05 0.0 -1.4343298062158283e-05 -1.0 0.0 +14 0.0 0.4956846237182617 -1.0 -1.3590316484624054e-05 0.0 1.3590316484624054e-05 -1.0 0.0 +19 0.4802055358886719 0.511164665222168 -1.0 -1.5412135326187126e-05 0.0 1.5412135326187126e-05 -1.0 0.0 +15 0.4956846237182617 0.4956846237182617 -0.9999999403953552 -1.54771696543321e-05 0.0 1.54771696543321e-05 -0.9999999403953552 0.0 +13 0.4956846237182617 0.9913692474365234 -0.9999999403953552 -1.4854152141197119e-05 0.0 1.4854152141197119e-05 -0.9999999403953552 0.0 +18 0.01548004150390625 0.5111637115478516 -1.0 -1.4771365385968238e-05 0.0 1.4771365385968238e-05 -1.0 0.0 +14 0.0 0.4956846237182617 -1.0 -1.3590316484624054e-05 0.0 1.3590316484624054e-05 -1.0 0.0 +15 0.4956846237182617 0.4956846237182617 -0.9999999403953552 -1.54771696543321e-05 0.0 1.54771696543321e-05 -0.9999999403953552 0.0 +10 0.713590145111084 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +14 0.6740007400512695 0.9604101181030273 0.0 0.0 -1.0 -0.0 1.0 0.0 +12 0.6740007400512695 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.0 0.9999999403953552 0.0 +4 0.9710850715637207 0.9294509887695312 0.0 0.0 -1.0 -0.0 1.0 0.0 +19 0.9314956665039062 0.9294509887695312 0.0 0.0 -1.0 -0.0 1.0 0.0 +17 0.9314956665039062 0.4647254943847656 0.0 0.0 -1.0 -0.0 1.0 0.0 +6 0.9999997615814209 0.4647254943847656 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +17 0.9604103565216064 0.4647254943847656 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +16 0.9604103565216064 0.0 0.0 0.0 -1.0 -0.9999999403953552 0.0 0.0 +11 0.8027482032775879 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +15 0.7631587982177734 0.9604101181030273 0.0 0.0 -1.0 -1.0 0.0 0.0 +14 0.7631587982177734 0.4647254943847656 0.0 0.0 -0.9999999403953552 -0.9999999403953552 0.0 0.0 +shapeKeys: +animations: 0 +drivers: 0 +} diff --git a/samples/textures/smoke00.png b/samples/textures/smoke00.png new file mode 100755 index 0000000000000000000000000000000000000000..9be9e34e83fb948600b4a6084e7eb207c0304109 GIT binary patch literal 13059 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%0ADTzZ8AF} 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 Z1G_Z&PA}1i1Ka=r$w(-OSBo0>{||2=P$2*S literal 0 HcmV?d00001 diff --git a/samples/textures/smoke01.png b/samples/textures/smoke01.png new file mode 100755 index 0000000000000000000000000000000000000000..6843be4864522933cdc0c2219cdf6456b6938981 GIT binary patch literal 14423 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 literal 0 HcmV?d00001 diff --git a/samples/textures/smoke05.png b/samples/textures/smoke05.png new file mode 100755 index 0000000000000000000000000000000000000000..541874d655ead4a223e606cd508318800bc6a85d GIT binary patch literal 14323 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 P00JT-p(tJ>Y83Q8d(;dh literal 0 HcmV?d00001 diff --git a/texture.frag b/texture.frag index 372e2f6..ddc3133 100755 --- a/texture.frag +++ b/texture.frag @@ -78,6 +78,7 @@ void main(){ vec4 finalColor = diffuseColor; if(texturingEnabled){ vec4 textureColor = texture(textures[0].pastTexture, texCoords); + vec4 mixedTexColor = mix(textureColor, texture(textures[0].nextTexture, texCoords), textures[0].mixRatio); finalColor = (textures[0].animated ? mix(textureColor, texture(textures[0].nextTexture, texCoords), textures[0].mixRatio) : textureColor); } @@ -85,13 +86,14 @@ void main(){ if(lightingEnabled){ if(normalMapEnabled){ vec3 n = vec3(texture(textures[1].pastTexture, texCoords)); + if(textures[1].animated) + n = mix(n, texture(textures[1].nextTexture, texCoords).rgb, textures[1].mixRatio); normal = mat3(tan, biTan, norm) * n; } vec3 diffuseColor = vec3(0), specularColor = vec3(0); float coef = 1; - for(int i = 0; i < numLights; i++){ vec3 lightDir = vec3(0), reflectVec, viewDir = normalize(camPos - fragPos); float attenuation = 1.0;