glTexGen no OpenGL ES 2.0

Há várias horas que estou tentando implementar uma substituição GLSL para glTexGen com GL_OBJECT_LINEAR. Para o OpenGL ES 2.0. No Ogl GLSL, existe o gl_TextureMatrix que facilita isso, mas não está disponível no OpenGL ES 2.0 / OpenGL ES Shader Language 1.0

Vários sites mencionaram que isso deve ser "fácil" em um sombreador GLSL vert. Mas eu simplesmente não consigo fazê-lo funcionar.

Meu palpite é que não estou configurando os aviões corretamente ou estou perdendo algo em meu entendimento.

Eu examinei a web. Mas a maioria dos sites está falando sobre texturas projetadas, só estou procurando criar UVs com base em projeção planar. Os modelos estão sendo construídos no Maya, têm polígonos de 50k e o modelador está usando o mapeamento da plaina, mas o Maya não exportará os UVs. Então, eu estou tentando descobrir isso.

Examinei as informações da página de manual do glTexGen:

g = p1xo + p2yo + p3zo + p4wo

O que é g? G é o valor de s na chamada texture2d?

Eu olhei para o site:

http://www.opengl.org/wiki/Mathematics_of_glTexGen

Outro tamanho explica a mesma função:

coord = P1 * X + P2 * Y + P3 * Z + P4 * W

Eu não entendo como coord (um vec2 UV em minha mente) é igual ao produto escalar (um valor escalar)? Mesmo problema que tive antes com "g".

Como defino o avião? No meu código opengl c ++ 3.0, defino-o como [0, 0, 1, 0] (basicamente a unidade z) e o glTexGen funciona muito bem.

Ainda estou sentindo falta de algo.

Meu vert shader se parece basicamente com isso: WVPMatrix = World View Project Matrix. POSITION é a posição do vértice do modelo.

varying vec4 kOutBaseTCoord;
void main()
{
    gl_Position = WVPMatrix * vec4(POSITION, 1.0);

    vec4 sPlane = vec4(1.0, 0.0, 0.0, 0.0);
    vec4 tPlane = vec4(0.0, 1.0, 0.0, 0.0);
    vec4 rPlane = vec4(0.0, 0.0, 0.0, 0.0);
    vec4 qPlane = vec4(0.0, 0.0, 0.0, 0.0);

    kOutBaseTCoord.s = dot(vec4(POSITION, 1.0), sPlane);
    kOutBaseTCoord.t = dot(vec4(POSITION, 1.0), tPlane);
    //kOutBaseTCoord.r = dot(vec4(POSITION, 1.0), rPlane);
    //kOutBaseTCoord.q = dot(vec4(POSITION, 1.0), qPlane);

}

O frag shader

precision mediump float;
uniform sampler2D BaseSampler;
varying mediump vec4 kOutBaseTCoord;
void main()
{

    //gl_FragColor = vec4(kOutBaseTCoord.st, 0.0, 1.0);
    gl_FragColor = texture2D(BaseSampler, kOutBaseTCoord.st);
}

Eu tentei texture2DProj em frag shader

Aqui estão alguns dos outros links que eu procurei

http://www.gamedev.net/topic/407961-texgen-not-working-with-glsl-with-fixed-pipeline-is-ok/

Agradeço antecipadamente.

questionAnswers(1)

yourAnswerToTheQuestion