Introducao O primeiro da trabalho da disciplina de Rendering Avancado consiste em, utilizando a tecnica de Relief Mapping, aplicar as tecnicas de refracao, dispersao cromatica e efeito Fresnel. Para o desenvolvimento do trabalho, foi disponibilizado um codigo fonte com a tecnica do Relief Mapping, onde deveriam ser adicionadas as outras tecnicas de rendering.Desenvolvimento Durante o desenvolvimento do trabalho, foram utilizados os codigos implementados durante as aulas em laboratorio da disciplina. Para testar o resultado, foram utilizados o teapot e a esfera, junto com a textura da UFRGS. Os resultados obtidos com a aplicacao das tecnicas de rendering sao apresentados nas figuras a seguir. Descricao O segundo trabalho de implementacao da disciplina de Computacao Grafica tem como objetivo fixar os conhecimentos adquiridos sobre o pipeline de visualizacao do OpenGL. Conforme a especificacao do trabalho, foram implementadas as matrizes de translacao, rotacao em torno dos eixos x, y e z e utilizando quaternion, model view e matriz de projecao.Implementacao Durante o processo de desenvolvimento do pipeline, foi desenvolvido diversos metodos auxiliares, tais como:Normalizacao de vetor;Cross product;Dot product;Multiplicacao de matrizes.Matriz de translacao Para realizar a translacao dos objetos, foi implementado o metodo translation. O metodo recebe dois vetores como parametro, o primeiro contendo os valores que se deseja transladar o objeto e o outro com os valores do ponto que se deseja transladar. Para executar o metodo, inicialmente e instanciada uma matriz de translacao que chamara o metodo para, depois, atualizar a matriz de visualizacao, conforme e apresentado a seguir. matrix matTranslation; matTranslation.translation(&g_vLook,av); matTranslation.translation(&g_vUp,av); matTranslation.translation( &g_vEye,av );Void translation(vector &vet){ vet.normalize(); float ux = vet.x; float uy = vet.y; float uz = vet.z; m[0]=1.0f; m[4]=0.0f; m[8] =0.0f; m[12]=ux; m[1]=0.0f; m[5]=1.0f; m[9] =0.0f; m[13]=uy; m[2]=0.0f; m[6]=0.0f; m[10]=1.0f; m[14]=uz; m[3]=0.0f; m[7]=0.0f; m[11]=0.0f; m[15]=1.0f; }Rotacoes Para realizar a rotacao dos objetos, foram implementados quatro metodos distintos de rotacao:Rotacao sobre o eixo X;Rotacao sobre o eixo Y;Rotacao sobre o eixo Z;Quaternion. Para utilizar as matrizes de rotacao, inicialmente e instanciada uma matriz de rotacao que ira chamar o metodo de rotacao. Depois de calculada a matriz de rotacao, os novos valores atualizam os vetores Look Vector e Up Vector da Model View, conforme e apresentado a seguir. matrix matRotation; matRotation.rotateX( 1 ); matRotation.transformVector( &g_vLook ); matRotation.transformVector( &g_vUp );Rotacao sobre o eixo X Foi implementado o metodo rotateX para se realizar uma rotacao ao redor do eixo x. O metodo recebe como parametro o valor angulo de rotacao e atualiza a Model view, conforme e apresentado a seguir.Void rotateX(const float &angle){ float s = sin(DEGTORAD(angle)); float c = cos(DEGTORAD(angle)); m[0] = c; m[4] = 0; m[8] = s; m[12] = 0; m[1] = 0; m[5] = 1; m[9] = 0; m[13] = 0; m[2] = -s; m[6] = 0; m[10]= c; m[14] = 0; m[3] = 0; m[7] = 0; m[11]= 0; m[15] = 1;}Rotacao sobre o eixo Y Foi implementado o metodo rotateY para se realizar uma rotacao ao redor do eixo y. O metodo recebe como parametro o valor angulo de rotacao e atualiza a Model view, conforme e apresentado a seguir.Void rotateY(const float &angle){ float s = sin(DEGTORAD(angle));