TeamSOC / SOCEngine

MIT License
4 stars 0 forks source link

Light Shaft #54

Closed Jin02 closed 6 years ago

Jin02 commented 6 years ago

From @Jin02 on November 4, 2016 14:19

Light Shaft를 구현한다.

Copied from original issue: Jin02/SOCEngine#54

Jin02 commented 6 years ago

http://http.developer.nvidia.com/GPUGems3/gpugems3_ch13.html 참고

Jin02 commented 6 years ago

https://memo.naver.com/#%7B%22sAction%22%3A%22LEFT_LIST%22%2C%22htParams%22%3A%7B%22sFilter%22%3A%22ALL%22%2C%22nPage%22%3A1%2C%22nListNum%22%3A%22090106%22%2C%22nMemoSeq%22%3A707102%7D%7D

Jin02 commented 6 years ago

https://github.com/Jin02/SOCEngine/commit/16944847f61322656712a0ed7cff694cb7d02787

Jin02 commented 6 years ago

Ray Marching / Tracing을 이용한 Volumetric Lighting도 괜찮아보인다. 성능은 모르겠지만.. 가장 좋아보이긴 하다.

Jin02 commented 6 years ago

정리하자니.. 구현이 총 2가지로 나뉜다.

  1. 레이트레이싱/마칭으로 볼륨을 직접 그리는 방식
  2. Sun Shaft. 무조건 발광채가 스크린상에서 뒤에 있어야만 작동하는 방식

현재 내가 구현하려고 했었던 것은 2번이다.

내가 이해하기로는.. 2번으로는 태양이나 전구와 같은 간단한 발광체 형태만이 구현이 용이하고, 사용하고 있는 카메라로 쏟아져오는 빛만을 표현할 수 있다.

즉, 손전등과 같은 Spot Light와 같은 형태는 구현할 수 없다. 뭐.. 손전등같은 라이트를 눈/카메라로 직접 쏴버린다면 구현이야 가능하지만 내가 원하는건 그게 아니다.

그려내고 싶은건, 아래 같은게 아니라 Sun_Shaft 참고 : http://http.developer.nvidia.com/GPUGems3

이거 Volumetric_Lighting 참고 : https://sdm.scad.edu/

그래서 몇일동안 자료 및 여러 오픈소스를 찾아봤는데 Ray Tracing이나 Ray Marching을 이용한 Volumetric Lighting을 해야한다. 이걸 리얼타임상에서 돌리려면 어느정도 해상도는 낮추고 블러링 및 노이즈를 적용시켜가며 해야할 듯 싶다.

Jin02 commented 6 years ago

기존에 구현했던건 Sun Shaft로 명칭을 바꾸고 작업하면 될 것 같다. 위의 코멘트에서 아래쪽에 속하는건 #55 Volumetric Light Scattering으로 이슈를 따로 파서 작업할 예정이다.

Jin02 commented 6 years ago

개인정비 시간때 손코딩하면서 생각하다보니, 고쳐야 할 것도 꽤 있고, 개발해야할 양도 생각보다는 있는편이라서 12월까지로 일정을 바꿨다.

Jin02 commented 6 years ago

63 을 해결했으니까..

이제 남은건 LightShaftMap 작성이 남았다.

Jin02 commented 6 years ago

여러 Light를 Light Shaft 적용시켜줄까 고민을 많이 해봤는데.. 귀찮다. 단 하나의 Directional Light만 Light Shaft를 적용해준다.

작년에 고민했던게 물거품이 되지만.. 그래도 귀찮다. 적당히 하고 엔진 작업 끝내야 구직활동 들어가니까.. 과한 설계는 하지말고 적당히 끝내야겠다.

Jin02 commented 6 years ago

기존에 LightShaft Index라고 만들어둔걸 UserFlag로 변경한다

Jin02 commented 6 years ago