A comunidade brasileira de desenvolvimento e programação de jogos.
Bem-vindo: Dom Out 25, 2020 11:01 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 2 mensagens ] 
Autor Mensagem
 Título: [RESOLVIDO] Problema com Luzes no OpenGL ES2
MensagemEnviado: Seg Dez 12, 2011 11:31 am 
Offline
Membro novo

Registrado em: Sáb Jan 28, 2006 10:04 am
Mensagens: 3
Boa tarde pessoal,

Sou "novo" no fórum (na verdade, eu frequentava o fórum a uns bons anos atrás hehe), e estou desenvolvendo um sistema em OpenGL ES2.0 para Android.

Já me familiarizei um pouco com OpenGL ES e OpenGL ES 2, consegui montar tudo aqui mas estou com um problema com a iluminação.

A iluminação sai errada em cada face, tentei ver se era algo de posição ou algo do tipo mas não consegui achar nenhum padrão no erro.

Tanto calculando as normais quanto usando as que exportei (usei o 3dsmax para criar um modelo basico em obj) o erro é o mesmo. Vejam só:

Imagem

Só como referencia, a luz é puntiforme e está exatamente no centro do cenário (0,0,0).
Fiz esses códigos como shaders:

Vertex:
Código:
//Atributos

uniform mat4 uMVMatrix; //Model/View Matrix
uniform mat4 uPMatrix; //Model/View/Projection Matrix
uniform mat3 uNMatrix; //Normal Matrix

attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
attribute vec2 aTextureCoord;
attribute float aUseTexture;
attribute vec3 aNormal;

varying vec4 vColor;
varying vec2 vTextureCoord;
varying vec3 vNormal;
varying vec4 vPosition;

void main(){
   vPosition    = uMVMatrix * vec4(aVertexPosition,1.0);
   //vNormal    = vec3(uMVMatrix * vec4(aNormal,0.0));
   vNormal      = aNormal * uNMatrix;
   
   gl_Position = uPMatrix * vPosition;
      
   vColor = aVertexColor;
   gl_PointSize = 2.0; 
   vTextureCoord = aTextureCoord;
   
}


Fragment:
Código:
precision mediump float;

uniform sampler2D uSampler;

uniform float uIsPoint;

uniform vec3 uLightPos;           //    The position of the light in eye space.
uniform vec3 uAmbientColor;      //   Ambient Color
varying vec3 vNormal;             //    Interpolated normal for this fragment.


varying vec4 vColor;
varying vec2 vTextureCoord;

varying vec4 vPosition;
uniform vec3 uPointLightingColor;

void main(){         
   if(uIsPoint >= 2.0) {
      gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
   }else{
       float distance = length(uLightPos - vPosition.xyz);                 
       vec3 lightVector = normalize(uLightPos - vPosition.yxz);                 
      
       float diffuse = max(dot(vNormal, lightVector), 0.0) + 0.2;                                                                    
      diffuse = clamp(diffuse, 0.0, 1.0);
   
       //diffuse = diffuse * (1.0 / (1.0 + (0.10 * distance)));
      
       //diffuse += 0.2;   
   
      vec4 vTex = texture2D(uSampler, vTextureCoord);
      vec4 v2Color = vColor;// * vTex;
       gl_FragColor = vec4(v2Color.rgb * diffuse, v2Color.a);// * vTex; * texture2D(uSampler, vTextureCoord));
   }
}     


Desabilitei a textura pelo shader só pra poder ver melhor esse problema, com textura acaba ficando escuro por causa dela mesma.

Alguém tem alguma ideia de onde pode estar o problema?

Para gerar as normais usei o mesmo algorítimo que a Three.js usa para gerar e usando a Three.js meus modelos ficam com a iluminação correta, então não é o gerador de normais.


Obrigado!

Lucas

_________________
Mestre Racerxdl - The New Generation GZ


Editado pela última vez por racerxdl em Sex Dez 16, 2011 2:13 pm, em um total de 1 vez.

Voltar ao topo
 Perfil  
 
 Título: Re: Problema com Luzes no OpenGL ES2
MensagemEnviado: Sex Dez 16, 2011 2:13 pm 
Offline
Membro novo

Registrado em: Sáb Jan 28, 2006 10:04 am
Mensagens: 3
Opa consegui resolver, era a passagem das normais que tava em 2 e não em 3.

Vlws!

_________________
Mestre Racerxdl - The New Generation GZ


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 2 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Ir para:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB