5. Custom Smoke GeneratorAnimated Sprite로는 연기를 표현하기가 쉽지 않았다.적절한 조명, 색 등등으로 인한 연기의 적절한 영상 만들기 어려움.결국 Particle System을 이용하기로 함.불 환경에 맞게 lighting을 미세 조정하여 색을 제어함.Smoke Particle이 x축에서 회전하게 함Smoke가 자기 자신으로 말려 들어가는 듯한 효과를 손쉽게 구현.
6. Adding Variety to the Flames효과에 사용할 수 있는 에니메이션의 수가 적다면 같은 이미지가 반복되는 것이 문제가 될 수 있다.Animated Sprite도 Particle System화 하여 크기, 위치, 수명, 시작 프레임, 알파값 등을 설정된 값 범위에서 무작위로 설정한다.Animated SpriteParticle의 축을 뒤집어 다양성을 증가시킨다.
7. Storing the AnimationVolume texture (3D texture) 를 사용하는 것이 유용함.Z-texture coordinate를 증가시키는 것이 곧 에니메이션을 재생하는 것임.압축된 256x256x256 B8G8R8A8 texture를 사용함. (16mb)
8. Blending Flames and Smoke처음에 additive blending 을 사용함.(srcblend = one, destblend = one)Sprite들을 독립적으로 그릴 수 있음.하지만 결과물이 사실적이지 않으며 카툰 같아짐.화염과 연기를 섞는 것이 더 까다로워 진다.Alpha Blending을 사용함. (srcblend = srcalpha, destblend = invsrcalpha)위의 문제점들이 해결됨.파티클을 프레임마다 정렬하여 렌더링 해야 함.하지만 그 성능상의 영향은 무시해도 좋을 정도 이다.
9. Particle Motion화염 근원지가 움직일 경우 그 간격을 채우기에는 particle이 충분하지 않고 따로 떨어져 있는 particle은 효과를 망친다.불이 연속되게 유지하기 위해 불과 발화체의 가중치를 이용하였다.처음 생성 했을 때 가중치가 높아 발화체가 움직이면 불도 같이 움직인다.particle이 오래 될 수록 가중치가 낮아져 같이 움직이는 정도가 줄어든다.
12. Custom Sprite정사각형 Particle Sprite는 불 모양에는 낭비가 심했음. (보통 1/3정도만 차지)화염에 더 잘 맞는 직사각형 sprite를 사용함.각 프레임에 맞는 최적의 직사각형을 생성한 후 particle 위치를 기준으로 sprite 중심에 오프셋을 더하여 맞춘다.
14. Glow첫 번째 패스에서 x축에 8픽셀 넓이 Blurring두 번째 패스에서y축에 8픽셀 넓이 Blurring최종 Blurring될 부분을 선택하기 위해 Alpha 채널을 이용함.
15. Heat ShimmerRender target texture에 “heat shimmer” 즉 왜곡(distortion) 정보를 렌더링 한다. (왜곡 정보는 heat shimmer texture에 있음.)최종 혼합 과정에서 “rendered scene” 픽셀의 u,v좌표값에heat render target texture에 저장되어 있는 red, green값을 더하여 왜곡된 좌표를 해당 픽셀의 color값으로 사용한다.