Fritask (discussão | contribs)
Fritask (discussão | contribs)
 
(13 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
= Conceito =
= Conceito =
Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.
Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.
 
A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.
A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.
<br>
<br>
Linha 10: Linha 11:


= Código =
= Código =
Dar um exemplo de um código-fonte que mostre alguma parte da aplicação final. O código deverá ser curto mas que o leitor consiga enxergar para que serve. Pode-se usar comentários no programa.
void
 
RenderFrame (int n, const struct mdl_model_t *mdl)
{
 
int i, j;
 
GLfloat s, t;
 
vec3_t v;
 
struct mdl_vertex_t *pvert;
 
/* Verifica se n está em um alcance válido */
 
if ((n < 0) || (n > mdl->header.num_frames - 1))
 
return;
 
/* Ativa as texturas dos modelos */
 
glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);
 
/* Desenha o Modelo */
 
glBegin (GL_TRIANGLES);
 
/* Desenha cada Triângulo */
 
for (i = 0; i < mdl->header.num_tris; ++i)
{
 
/* Desenha cada vértice */
 
for (j = 0; j < 3; ++j)
{
 
pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];
 
/* Calcula as coordenadas da textura */
 
s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s;
 
t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;
 
if (!mdl->triangles[i].facesfront &&
mdl->texcoords[mdl->triangles[i].vertex[j]].onseam)
{
 
s += mdl->header.skinwidth * 0.5f; /* Face Traseira */
 
}
 
/* Escalas S e T variam de 0.0 a 1.0 */
 
s = (s + 0.5) / mdl->header.skinwidth;
 
t = (t + 0.5) / mdl->header.skinheight;
 
/* Passa as coordenadas de textura para OpenGL */
 
glTexCoord2f (s, t);
 
/* Vetor Normal */
 
glNormal3fv (anorms_table[pvert->normalIndex]);
 
/* Calcula a posição do vértice real */
 
v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0];
 
v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1];
 
v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];
 
glVertex3fv (v);
 
}
 
}
 
glEnd ();
 
}
 
<br>
<br>


= Diagrama de Casos de Uso =
= Diagrama de Casos de Uso =
Desenhar ou plotar  os requisitos funcionais de uma aplicação.
[[Arquivo:Picture1.png]]
<br>
<br>


= Interações com as tecnologias =
= Interações com as tecnologias =
Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.
[[Conceito de Realidade Aumentada]] e [[Programação de Games]], ambos utilizam a programação em renderização para realizar a renderização em tempo real ou renderização offline.
<br>
<br>


= Informações adicionais =
= Informações adicionais =
Descrever detalhes a mais sobre esse tema.
A renderização pode ser dividia em duas categorias principais: renderização em tempo real (conhecido como renderização online) e pré-renderização (conhecido como renderização offline). A renderização em tempo real é usada para renderizar de forma interativa com uma cena, como em jogos 3D, e geralmente cada quadro deve ser renderizado em poucos milissegundos. A renderização offline é usada para criar imagens e filmes realistas, onde cada quadro pode levar horas ou dias para serem finalizados.
<br>
<br>


= Referências bibliográficas =
= Referências bibliográficas =
Relacionar aqui as referências bibliográficas no padrão ABNT.  
RENDERIZAÇÃO. In: WIKIPÉDIA, a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Renderiza%C3%A7%C3%A3o&oldid=48488985>. Acesso em: 26 set. 2017.
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores
 
Software Rendering. In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Software_rendering&oldid=786187051>. Acesso em 26 set. 2017.
 
Rendering (computer graphics). In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Rendering_(computer_graphics)&oldid=799916779>. Acesso em 26 set. 2017.
 
HENRY, David. MDL file format (Quake's models). Disponível em: <http://tfc.duke.free.fr/coding/mdl-specs-en.html>. Acesso em 26 set. 2017.
<br>
<br>

Edição atual tal como às 20h07min de 26 de setembro de 2017

Conceito

Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.

A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.

Softwares

Alguns softwares que são usados para esta finalidade são: OpenGL e DirectX. Alguns dos softwares que usam a programação em renderização são: 3ds Max, Maya, CINEMA 4D, Blender, Adobe Photoshop, Gimp, Corel, entre outros. E algumas das linguagens de programação mais usadas para tal processo são: C, C++, C#, Haskell, JavaScript. Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.

Código

void

RenderFrame (int n, const struct mdl_model_t *mdl) {

int i, j;

GLfloat s, t;

vec3_t v;

struct mdl_vertex_t *pvert;

/* Verifica se n está em um alcance válido */

if ((n < 0) || (n > mdl->header.num_frames - 1))

return;

/* Ativa as texturas dos modelos */

glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);

/* Desenha o Modelo */

glBegin (GL_TRIANGLES);

/* Desenha cada Triângulo */

for (i = 0; i < mdl->header.num_tris; ++i) {

/* Desenha cada vértice */

for (j = 0; j < 3; ++j) {

pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];

/* Calcula as coordenadas da textura */

s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s;

t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;

if (!mdl->triangles[i].facesfront && mdl->texcoords[mdl->triangles[i].vertex[j]].onseam) {

s += mdl->header.skinwidth * 0.5f; /* Face Traseira */

}

/* Escalas S e T variam de 0.0 a 1.0 */

s = (s + 0.5) / mdl->header.skinwidth;

t = (t + 0.5) / mdl->header.skinheight;

/* Passa as coordenadas de textura para OpenGL */

glTexCoord2f (s, t);

/* Vetor Normal */

glNormal3fv (anorms_table[pvert->normalIndex]);

/* Calcula a posição do vértice real */

v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0];

v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1];

v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];

glVertex3fv (v);

}

}

glEnd ();

}


Diagrama de Casos de Uso


Interações com as tecnologias

Conceito de Realidade Aumentada e Programação de Games, ambos utilizam a programação em renderização para realizar a renderização em tempo real ou renderização offline.

Informações adicionais

A renderização pode ser dividia em duas categorias principais: renderização em tempo real (conhecido como renderização online) e pré-renderização (conhecido como renderização offline). A renderização em tempo real é usada para renderizar de forma interativa com uma cena, como em jogos 3D, e geralmente cada quadro deve ser renderizado em poucos milissegundos. A renderização offline é usada para criar imagens e filmes realistas, onde cada quadro pode levar horas ou dias para serem finalizados.

Referências bibliográficas

RENDERIZAÇÃO. In: WIKIPÉDIA, a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Renderiza%C3%A7%C3%A3o&oldid=48488985>. Acesso em: 26 set. 2017.

Software Rendering. In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Software_rendering&oldid=786187051>. Acesso em 26 set. 2017.

Rendering (computer graphics). In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Rendering_(computer_graphics)&oldid=799916779>. Acesso em 26 set. 2017.

HENRY, David. MDL file format (Quake's models). Disponível em: <http://tfc.duke.free.fr/coding/mdl-specs-en.html>. Acesso em 26 set. 2017.