Fix wingflex shader to use current effect code. A better way would probably be to just keep the wing flexing part there and then include model-combined, but I couldnt get that to work unfortunately
This commit is contained in:
parent
13b24e5290
commit
1be001a18c
2 changed files with 1308 additions and 1150 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,11 +1,15 @@
|
||||||
// -*- mode: C; -*-
|
// -*- mode: C; -*-
|
||||||
// Licence: GPL v2
|
// Licence: GPL v2
|
||||||
// based on
|
|
||||||
// © Emilian Huminiuc and Vivian Meazza 2011
|
// © Emilian Huminiuc and Vivian Meazza 2011
|
||||||
// addition for wingflex mesh distortion by Thorsten Renk 2015
|
|
||||||
|
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// the file is directly copied from model-combined.eff except the (three) WINGFLEX to END WINGLFEX parts
|
||||||
|
// and the subsequent gl_Vertex integrations
|
||||||
|
// I didnt find how to do a more beautiful way (including model-combined and only adding the wingflexer part)
|
||||||
|
// if you know how to do this, please do :)
|
||||||
|
|
||||||
varying vec3 rawpos;
|
varying vec3 rawpos;
|
||||||
varying vec3 VNormal;
|
varying vec3 VNormal;
|
||||||
varying vec3 VTangent;
|
varying vec3 VTangent;
|
||||||
|
@ -22,7 +26,12 @@ attribute vec3 binormal;
|
||||||
uniform float pitch;
|
uniform float pitch;
|
||||||
uniform float roll;
|
uniform float roll;
|
||||||
uniform float hdg;
|
uniform float hdg;
|
||||||
uniform int wingflex_type;
|
uniform int refl_dynamic;
|
||||||
|
uniform int nmap_enabled;
|
||||||
|
uniform int shader_qual;
|
||||||
|
|
||||||
|
// WINGFLEX
|
||||||
|
uniform int wingflex_type;
|
||||||
uniform float body_width;
|
uniform float body_width;
|
||||||
uniform float wingflex_alpha;
|
uniform float wingflex_alpha;
|
||||||
uniform float wingflex_trailing_alpha;
|
uniform float wingflex_trailing_alpha;
|
||||||
|
@ -36,33 +45,14 @@ uniform float rotation_x2;
|
||||||
uniform float rotation_y2;
|
uniform float rotation_y2;
|
||||||
uniform float rotation_z2;
|
uniform float rotation_z2;
|
||||||
uniform float rotation_rad;
|
uniform float rotation_rad;
|
||||||
uniform int refl_dynamic;
|
// END WINGFLEX
|
||||||
uniform int nmap_enabled;
|
|
||||||
uniform int shader_qual;
|
|
||||||
|
|
||||||
//////Fog Include///////////
|
//////Fog Include///////////
|
||||||
// uniform int fogType;
|
// uniform int fogType;
|
||||||
// void fog_Func(int type);
|
// void fog_Func(int type);
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
|
||||||
void setupShadows(vec4 eyeSpacePos);
|
// WINGFLEX
|
||||||
|
|
||||||
void rotationMatrixPR(in float sinRx, in float cosRx, in float sinRy, in float cosRy, out mat4 rotmat)
|
|
||||||
{
|
|
||||||
rotmat = mat4( cosRy , sinRx * sinRy , cosRx * sinRy, 0.0,
|
|
||||||
0.0 , cosRx , -sinRx * cosRx, 0.0,
|
|
||||||
-sinRy, sinRx * cosRy, cosRx * cosRy , 0.0,
|
|
||||||
0.0 , 0.0 , 0.0 , 1.0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
void rotationMatrixH(in float sinRz, in float cosRz, out mat4 rotmat)
|
|
||||||
{
|
|
||||||
rotmat = mat4( cosRz, -sinRz, 0.0, 0.0,
|
|
||||||
sinRz, cosRz, 0.0, 0.0,
|
|
||||||
0.0 , 0.0 , 1.0, 0.0,
|
|
||||||
0.0 , 0.0 , 0.0, 1.0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
vec2 calc_deflection(float y){
|
vec2 calc_deflection(float y){
|
||||||
float distance;
|
float distance;
|
||||||
float bwh = body_width/2;
|
float bwh = body_width/2;
|
||||||
|
@ -85,16 +75,33 @@ vec2 calc_deflection(float y){
|
||||||
vec2 returned = vec2 ( deflection, delta_y );
|
vec2 returned = vec2 ( deflection, delta_y );
|
||||||
return returned;
|
return returned;
|
||||||
}
|
}
|
||||||
|
// END WINGFLEX
|
||||||
|
|
||||||
|
void setupShadows(vec4 eyeSpacePos);
|
||||||
|
|
||||||
|
void rotationMatrixPR(in float sinRx, in float cosRx, in float sinRy, in float cosRy, out mat4 rotmat)
|
||||||
|
{
|
||||||
|
rotmat = mat4( cosRy , sinRx * sinRy , cosRx * sinRy, 0.0,
|
||||||
|
0.0 , cosRx , -sinRx * cosRx, 0.0,
|
||||||
|
-sinRy, sinRx * cosRy, cosRx * cosRy , 0.0,
|
||||||
|
0.0 , 0.0 , 0.0 , 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void rotationMatrixH(in float sinRz, in float cosRz, out mat4 rotmat)
|
||||||
|
{
|
||||||
|
rotmat = mat4( cosRz, -sinRz, 0.0, 0.0,
|
||||||
|
sinRz, cosRz, 0.0, 0.0,
|
||||||
|
0.0 , 0.0 , 1.0, 0.0,
|
||||||
|
0.0 , 0.0 , 0.0, 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
|
// WINGFLEX
|
||||||
vec4 vertex = gl_Vertex;
|
vec4 vertex = gl_Vertex;
|
||||||
|
|
||||||
if ( wingflex_type == 0 ) {
|
if ( wingflex_type == 0 ) {
|
||||||
float x_factor = max((abs(vertex.x) - body_width),0);
|
vec2 deflection = calc_deflection(vertex.y);
|
||||||
float y_factor = max(vertex.y,0.0);
|
|
||||||
|
|
||||||
vec2 deflection=calc_deflection(vertex.y);
|
|
||||||
|
|
||||||
vertex.z += deflection[0];
|
vertex.z += deflection[0];
|
||||||
vertex.y += deflection[1];
|
vertex.y += deflection[1];
|
||||||
|
@ -179,10 +186,13 @@ void main(void)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// END WINGFLEX
|
||||||
|
|
||||||
rawpos = vertex.xyz;
|
rawpos = vertex.xyz;
|
||||||
vec4 ecPosition = gl_ModelViewMatrix * vertex;
|
vec4 ecPosition = gl_ModelViewMatrix * vertex;
|
||||||
|
//rawpos = gl_Vertex.xyz;
|
||||||
|
//vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex;
|
||||||
|
//fog_Func(fogType);
|
||||||
|
|
||||||
VNormal = normalize(gl_NormalMatrix * gl_Normal);
|
VNormal = normalize(gl_NormalMatrix * gl_Normal);
|
||||||
|
|
||||||
|
@ -240,6 +250,7 @@ void main(void)
|
||||||
reflVec = reflVec_stat;
|
reflVec = reflVec_stat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gl_FrontColor = gl_FrontMaterial.emission + gl_Color
|
gl_FrontColor = gl_FrontMaterial.emission + gl_Color
|
||||||
* (gl_LightModel.ambient + gl_LightSource[0].ambient);
|
* (gl_LightModel.ambient + gl_LightSource[0].ambient);
|
||||||
|
|
||||||
|
@ -247,5 +258,6 @@ void main(void)
|
||||||
//gl_Position = ftransform();
|
//gl_Position = ftransform();
|
||||||
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
||||||
|
|
||||||
|
|
||||||
setupShadows(ecPosition);
|
setupShadows(ecPosition);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue