Chapter 6. Fire in the “Vulcan” Demo<br />GPU Gems 1<br />http://cafe.naver.com/shader<br />임용균 (guardin@naver.com)<br />
Creating Realistic Flames<br />fully procedural flames<br />Screen space distortion based flames<br />
Creating Realistic Flames<br />Particle System 으로 많은 화염을 표현 하기에는 Polygon이 너무 많이 필요함.<br />물리 연산도 무시하지 못 할 수준임.<br />Video-...
Implementing Animated Sprites<br />2개의 화염, 1개의 연기 에니메이션(각 64프레임)<br />1개의 떠다니는 불똥 에니메이션(64프레임)<br />총 256프레임<br />프레임당 256...
Custom Smoke Generator<br />Animated Sprite로는 연기를 표현하기가 쉽지 않았다.<br />적절한 조명, 색 등등으로 인한 연기의 적절한 영상 만들기 어려움.<br />결국 Particl...
Adding Variety to the Flames<br />효과에 사용할 수 있는 에니메이션의 수가 적다면 같은 이미지가 반복되는 것이 문제가 될 수 있다.<br />Animated Sprite도 Particle Sy...
Storing the Animation<br />Volume texture (3D texture) 를 사용하는 것이 유용함.<br />Z-texture coordinate를 증가시키는 것이 곧 에니메이션을 재생하는 것임...
Blending Flames and Smoke<br />처음에 additive blending 을 사용함.(srcblend = one, destblend = one)<br />Sprite들을 독립적으로 그릴 수 있음.<...
Particle Motion<br />화염 근원지가 움직일 경우 그 간격을 채우기에는 particle이 충분하지 않고 따로 떨어져 있는 particle은 효과를 망친다.<br />불이 연속되게 유지하기 위해 불과 발화체...
Performance<br />Video-textured 빌보드는 막대한 양의 픽셀 처리 능력을 소비함.<br />Layer Composition을 이용해 해결함.<br />
Layer Composition<br />화염을 저해상도 버퍼(1/4)에 렌더링 한 후 원래의 Scene에 합성한다.<br />전체 이미지 품질의 저하는 미비했으나 성능 향상은 매우 컸다.<br />
Custom Sprite<br />정사각형 Particle Sprite는 불 모양에는 낭비가 심했음. (보통 1/3정도만 차지)<br />화염에 더 잘 맞는 직사각형 sprite를 사용함.<br />각 프레임에 맞는 최...
Post-Rendering Effects<br />glow, film grain, heat shimmer (distortion)<br />
Glow<br />첫 번째 패스에서 x축에 8픽셀 넓이 Blurring<br />두 번째 패스에서y축에 8픽셀 넓이 Blurring<br />최종 Blurring될 부분을 선택하기 위해 Alpha 채널을 이용함.<br />
Heat Shimmer<br />Render target texture에 “heat shimmer” 즉 왜곡(distortion) 정보를 렌더링 한다. (왜곡 정보는 heat shimmer texture에 있음.)<br...
Heat Shimmer<br />
Grain<br />
Conclusion<br />
Upcoming SlideShare
Loading in …5
×

Gpu Gems 1 Chapter 6

1,344 views

Published on

http://cafe.naver.com/shader

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,344
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gpu Gems 1 Chapter 6

  1. 1. Chapter 6. Fire in the “Vulcan” Demo<br />GPU Gems 1<br />http://cafe.naver.com/shader<br />임용균 (guardin@naver.com)<br />
  2. 2. Creating Realistic Flames<br />fully procedural flames<br />Screen space distortion based flames<br />
  3. 3. Creating Realistic Flames<br />Particle System 으로 많은 화염을 표현 하기에는 Polygon이 너무 많이 필요함.<br />물리 연산도 무시하지 못 할 수준임.<br />Video-Textured Sprite(Animated Sprite) 를 사용하자.<br />
  4. 4. Implementing Animated Sprites<br />2개의 화염, 1개의 연기 에니메이션(각 64프레임)<br />1개의 떠다니는 불똥 에니메이션(64프레임)<br />총 256프레임<br />프레임당 256x256 텍스쳐일때<br />Uncompressed Texture : 67MB<br />Compressed Texture (DXT1) : 8.4MB<br />
  5. 5. Custom Smoke Generator<br />Animated Sprite로는 연기를 표현하기가 쉽지 않았다.<br />적절한 조명, 색 등등으로 인한 연기의 적절한 영상 만들기 어려움.<br />결국 Particle System을 이용하기로 함.<br />불 환경에 맞게 lighting을 미세 조정하여 색을 제어함.<br />Smoke Particle이 x축에서 회전하게 함<br />Smoke가 자기 자신으로 말려 들어가는 듯한 효과를 손쉽게 구현.<br />
  6. 6. Adding Variety to the Flames<br />효과에 사용할 수 있는 에니메이션의 수가 적다면 같은 이미지가 반복되는 것이 문제가 될 수 있다.<br />Animated Sprite도 Particle System화 하여 크기, 위치, 수명, 시작 프레임, 알파값 등을 설정된 값 범위에서 무작위로 설정한다.<br />Animated SpriteParticle의 축을 뒤집어 다양성을 증가시킨다.<br />
  7. 7. Storing the Animation<br />Volume texture (3D texture) 를 사용하는 것이 유용함.<br />Z-texture coordinate를 증가시키는 것이 곧 에니메이션을 재생하는 것임.<br />압축된 256x256x256 B8G8R8A8 texture를 사용함. (16mb)<br />
  8. 8. Blending Flames and Smoke<br />처음에 additive blending 을 사용함.(srcblend = one, destblend = one)<br />Sprite들을 독립적으로 그릴 수 있음.<br />하지만 결과물이 사실적이지 않으며 카툰 같아짐.<br />화염과 연기를 섞는 것이 더 까다로워 진다.<br />Alpha Blending을 사용함. (srcblend = srcalpha, destblend = invsrcalpha)<br />위의 문제점들이 해결됨.<br />파티클을 프레임마다 정렬하여 렌더링 해야 함.<br />하지만 그 성능상의 영향은 무시해도 좋을 정도 이다.<br />
  9. 9. Particle Motion<br />화염 근원지가 움직일 경우 그 간격을 채우기에는 particle이 충분하지 않고 따로 떨어져 있는 particle은 효과를 망친다.<br />불이 연속되게 유지하기 위해 불과 발화체의 가중치를 이용하였다.<br />처음 생성 했을 때 가중치가 높아 발화체가 움직이면 불도 같이 움직인다.<br />particle이 오래 될 수록 가중치가 낮아져 같이 움직이는 정도가 줄어든다.<br />
  10. 10. Performance<br />Video-textured 빌보드는 막대한 양의 픽셀 처리 능력을 소비함.<br />Layer Composition을 이용해 해결함.<br />
  11. 11. Layer Composition<br />화염을 저해상도 버퍼(1/4)에 렌더링 한 후 원래의 Scene에 합성한다.<br />전체 이미지 품질의 저하는 미비했으나 성능 향상은 매우 컸다.<br />
  12. 12. Custom Sprite<br />정사각형 Particle Sprite는 불 모양에는 낭비가 심했음. (보통 1/3정도만 차지)<br />화염에 더 잘 맞는 직사각형 sprite를 사용함.<br />각 프레임에 맞는 최적의 직사각형을 생성한 후 particle 위치를 기준으로 sprite 중심에 오프셋을 더하여 맞춘다.<br />
  13. 13. Post-Rendering Effects<br />glow, film grain, heat shimmer (distortion)<br />
  14. 14. Glow<br />첫 번째 패스에서 x축에 8픽셀 넓이 Blurring<br />두 번째 패스에서y축에 8픽셀 넓이 Blurring<br />최종 Blurring될 부분을 선택하기 위해 Alpha 채널을 이용함.<br />
  15. 15. Heat Shimmer<br />Render target texture에 “heat shimmer” 즉 왜곡(distortion) 정보를 렌더링 한다. (왜곡 정보는 heat shimmer texture에 있음.)<br />최종 혼합 과정에서 “rendered scene” 픽셀의 u,v좌표값에heat render target texture에 저장되어 있는 red, green값을 더하여 왜곡된 좌표를 해당 픽셀의 color값으로 사용한다.<br />
  16. 16. Heat Shimmer<br />
  17. 17. Grain<br />
  18. 18. Conclusion<br />

×