UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

50 lines (36 loc) 1.05 kB
import boneTexture from '../../shaders/bonetexture.glsl'; const shader = ` uniform mat4 u_VP; uniform float u_layerAlpha; uniform bool u_hasBones; attribute vec3 a_position; attribute vec3 a_normal; attribute vec2 a_uv; attribute vec4 a_bones; attribute vec4 a_weights; varying vec3 v_normal; varying vec2 v_uv; varying float v_layerAlpha; ${boneTexture} void transform(inout vec3 position, inout vec3 normal) { mat4 bone; bone += fetchMatrix(a_bones[0], 0.0) * a_weights[0]; bone += fetchMatrix(a_bones[1], 0.0) * a_weights[1]; bone += fetchMatrix(a_bones[2], 0.0) * a_weights[2]; bone += fetchMatrix(a_bones[3], 0.0) * a_weights[3]; position = vec3(bone * vec4(position, 1.0)); normal = mat3(bone) * normal; } void main() { vec3 position = a_position; vec3 normal = a_normal; if (u_hasBones) { transform(position, normal); } v_normal = normal; v_uv = a_uv; v_layerAlpha = u_layerAlpha; gl_Position = u_VP * vec4(position, 1.0); } `; export default shader;