From 8c034655be48f2722bc5dc7ada06591ab91f05b9 Mon Sep 17 00:00:00 2001 From: QuantumCoderQC Date: Mon, 18 Oct 2021 19:49:25 +0200 Subject: [PATCH] implement morph_target.glsl --- Shaders/std/morph_target.glsl | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/Shaders/std/morph_target.glsl b/Shaders/std/morph_target.glsl index 6fdf4b2f..616acb20 100644 --- a/Shaders/std/morph_target.glsl +++ b/Shaders/std/morph_target.glsl @@ -1,6 +1,27 @@ -#version 450 +uniform sampler2D morphDataPos; +uniform sampler2D morphDataNor; +uniform vec2 morphScaleOffset; +uniform float morphWeights[32]; -uniform sampler2D morphData; -uniform float morphWeights[maxMorphTargets]; +void getMorphedVertex(vec2 uvCoord, inout vec3 A){ + for(int i = 0; i<32; i++ ) + { + vec2 tempCoord = uvCoord; + tempCoord.y *= i; + vec3 morph = texture(morphDataPos, tempCoord).rgb * morphScaleOffset.x + morphScaleOffset.y; + A += morphWeights[i] * morph; + } +} -in vec2 texCoord; +void getMorphedNormal(vec2 uvCoord, vec3 oldNor, inout vec3 morphNor){ + for(int i = 0; i<32; i++ ) + { + vec2 tempCoord = uvCoord; + tempCoord.y *= i; + vec3 norm = morphWeights[i] + (texture(morphDataNor, tempCoord).rgb * 2.0 - 1.0); + morphNor += norm; + } + + morphNor += oldNor; + morphNor = normalize(morphNor); +} \ No newline at end of file