Efeitos de turbulência Usando o exemplo “wood.cpp” e outros envolvendo o conceito de ruído (‘noise’) Luiz Fernando Estevão...
Observando o código <ul><li>// wood.vert </li></ul><ul><li>varying float LightIntensity; </li></ul><ul><li>varying vec3  M...
<ul><li>// wood.frag </li></ul><ul><li>varying float LightIntensity;  </li></ul><ul><li>varying vec3 MCposition; </li></ul...
<ul><li>vec4 matspec = gl_FrontMaterial.specular; </li></ul><ul><li>float shininess = gl_FrontMaterial.shininess; </li></u...
<ul><li>r = fract((MCposition.x + MCposition.z) * GrainScale + 0.5); </li></ul><ul><li>noisevec[2] *= r; </li></ul><ul><li...
Um exemplo visual <ul><li>O círculo será perturbado para gerar o efeito de anel da tora de madeira. </li></ul><ul><li>O ân...
Aleatório <ul><li>A aparência de círculo é completamente perdida. </li></ul><ul><li>Gera descontinuidade visualmente perce...
Perlin noise <ul><li>O aspecto circular apesar de modificado, guarda semelhança. </li></ul><ul><li>As descontinuidades são...
Gráfico de “Perlin noise” T (iteração) R ( 0,5 unid)
Explicando <ul><li>A cada iteração o raio da figura se altera. </li></ul><ul><li>O raio anterior é considerado. Assim não ...
Outros exemplos
 
 
Bibliografia <ul><li>http://books.google.com.br/books?id=zkEY9RIm4WkC&pg=PA538&lpg=PA538&dq=glsl+wood+texture&source=bl&ot...
<ul><li>http://www.davidcornette.com/glsl/gallery.html </li></ul><ul><li>http://lumina.sourceforge.net/Tutorials/Noise.htm...
Próximos SlideShares
Carregando em…5
×

Efeitos De TurbulêNcia

559 visualizações

Publicada em

Descrição e explicação do algoritmo de Perlin para gerar ruído. Foco especialmente no exemplo do toco de madeira.

Publicada em: Tecnologia, Negócios
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
559
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Efeitos De TurbulêNcia

  1. 1. Efeitos de turbulência Usando o exemplo “wood.cpp” e outros envolvendo o conceito de ruído (‘noise’) Luiz Fernando Estevão da Silva DRE: 107362404 Data: 21/09/2009
  2. 2. Observando o código <ul><li>// wood.vert </li></ul><ul><li>varying float LightIntensity; </li></ul><ul><li>varying vec3 MCposition; </li></ul><ul><li>void main(){ </li></ul><ul><li>float Scale = 0.5; </li></ul><ul><li>vec3 ECposition = vec3(gl_ModelViewMatrix * gl_Vertex); </li></ul><ul><li>MCposition = vec3(gl_Vertex) * Scale; </li></ul><ul><li>vec3 tnorm = normalize(vec3 (gl_NormalMatrix * gl_Normal)); </li></ul><ul><li>LightIntensity = dot(normalize(gl_LightSource[0].position - ECposition), tnorm); </li></ul><ul><li>LightIntensity *= 1.5; </li></ul><ul><li>gl_Position = ftransform(); </li></ul><ul><li>} </li></ul>
  3. 3. <ul><li>// wood.frag </li></ul><ul><li>varying float LightIntensity; </li></ul><ul><li>varying vec3 MCposition; </li></ul><ul><li>varying vec3 pos; </li></ul><ul><li>varying vec3 normal; </li></ul><ul><li>uniform sampler3D Noise; </li></ul><ul><li>void main(void){ </li></ul><ul><li>vec3 LightWoodColor = vec3(0.6, 0.3, 0.1); </li></ul><ul><li>vec3 DarkWoodColor = vec3(0.4, 0.2, 0.07); </li></ul><ul><li>float RingFreq = 4.7; // “incremento do raio das circunferências” </li></ul><ul><li>float LightGrains = 1.0; // grânulos claros </li></ul><ul><li>float DarkGrains = 0.0; // grânulos escuros </li></ul><ul><li>float GrainThreshold = 0.5; // limiar de granulosidade </li></ul><ul><li>vec3 NoiseScale = vec3(0.5, 0.1, 0.1); </li></ul><ul><li>float Noisiness = 3.0; </li></ul><ul><li>float GrainScale = 27.0; </li></ul>
  4. 4. <ul><li>vec4 matspec = gl_FrontMaterial.specular; </li></ul><ul><li>float shininess = gl_FrontMaterial.shininess; </li></ul><ul><li>vec4 lightspec = gl_LightSource[0].specular; </li></ul><ul><li>vec3 noisevec = vec3 (texture3D(Noise, MCposition * NoiseScale) * </li></ul><ul><li>Noisiness); </li></ul><ul><li>vec3 location = MCposition + noisevec; </li></ul><ul><li>float dist = sqrt(location.x * location.x + location.z * location.z); </li></ul><ul><li>dist *= RingFreq; </li></ul><ul><li>float r = fract(dist + noisevec[0] + noisevec[1] + noisevec[2]) * 2.0; </li></ul><ul><li>if (r > 1.0) </li></ul><ul><li>r = 2.0 - r; </li></ul><ul><li>vec3 color = mix(LightWoodColor, DarkWoodColor, r); </li></ul>
  5. 5. <ul><li>r = fract((MCposition.x + MCposition.z) * GrainScale + 0.5); </li></ul><ul><li>noisevec[2] *= r; </li></ul><ul><li>if (r < GrainThreshold) </li></ul><ul><li>color += LightWoodColor * LightGrains * noisevec[2]; </li></ul><ul><li>else </li></ul><ul><li>color -= LightWoodColor * 0.0 * noisevec[2]; </li></ul><ul><li>color *= LightIntensity; </li></ul><ul><li>color = clamp(color, 0.0, 1.0); // clamp not needed for book shader </li></ul><ul><li>gl_FragColor = vec4 (color, 1.0); </li></ul><ul><li>} </li></ul>
  6. 6. Um exemplo visual <ul><li>O círculo será perturbado para gerar o efeito de anel da tora de madeira. </li></ul><ul><li>O ângulo irá ser varrido de 0 a 2 π . O raio irá variar conforme o critério usado. </li></ul>
  7. 7. Aleatório <ul><li>A aparência de círculo é completamente perdida. </li></ul><ul><li>Gera descontinuidade visualmente perceptível. </li></ul>
  8. 8. Perlin noise <ul><li>O aspecto circular apesar de modificado, guarda semelhança. </li></ul><ul><li>As descontinuidades são pequenas e normalmente imperceptíveis. </li></ul>
  9. 9. Gráfico de “Perlin noise” T (iteração) R ( 0,5 unid)
  10. 10. Explicando <ul><li>A cada iteração o raio da figura se altera. </li></ul><ul><li>O raio anterior é considerado. Assim não se perde a continuidade da curva. </li></ul><ul><li>Quanto mais perto do 0, maior é a chance do raio aumentar, e quanto mais perto do 2, a de diminuir. (o raio 1 é o equilíbrio). </li></ul>
  11. 11. Outros exemplos
  12. 14. Bibliografia <ul><li>http://books.google.com.br/books?id=zkEY9RIm4WkC&pg=PA538&lpg=PA538&dq=glsl+wood+texture&source=bl&ots=tWw8GGObGY&sig=Z05SeD3TVCdlp-E0glZd-ddOiM8&hl=pt-BR&ei=6sa2Sv-6MYGo8AaO45jLDQ&sa=X&oi=book_result&ct=result&resnum=1#v=onepage&q=&f=false </li></ul>
  13. 15. <ul><li>http://www.davidcornette.com/glsl/gallery.html </li></ul><ul><li>http://lumina.sourceforge.net/Tutorials/Noise.html </li></ul><ul><li>http://freespace.virgin.net/hugo.elias/models/m_perlin.htm </li></ul>

×