Question>
(중략)
다음에 개발할 게임은 좀비물인데
플래시 라이트를 벽에 비추면 벽에서 나오는 반사광 때문에 주변이 밝아지는 이런 것을 구현해야 하는 상황입니다.
현재 유니티로 재현은 했습니다만.. 이번에 확인했듯이
유니티에서는 콘솔에서 게임으로 만들 수준은 아니고 딱 데모로만 동작할 수 있는 수준입니다.
즉 static 한 물체에 dynamic Light 가 비추어 졌을때 indirect light 를 처리하는 부분이 어느 부분인지
indirect light cache 인가 했는데 그것도 아닌 것 같군요.
(중략)
그리고 한가지 더 질문드리자면 당연히 compute shader skinning 되죠? 메뉴얼에 안 보여서요..
(중략)
-------------------------------------------------------------
Answer>
중략된 부분은 의미를 모르겠고요.
제가 보기에는 질문이 2개로 보이네요.
답변은 아래와 같습니다.
1>플래시 라이트를 벽에 비추면 벽에서 나오는 반사광 때문에 주변이 밝아지는 것을 구현.
'[UE4 root]\Engine\Shaders' 밑에 아래와 같은 file들이 있습니다.
BasePassForForwardShadingPixelShader.usf
BasePassPixelShader.usf
둘 다 중요하지만, 'BasePassPixelShader.usf'가 더 중요하고요.
GetPrecomputedIndirectLightingAndSkyLight()로 간접광의 RGB를 계산합니다.
즉, 벽에 비추어진 광원의 값을 구하신 다음에
그 광원 값을 GetPrecomputedIndirectLightingAndSkyLight()에 반영되도록
수정하는 방식으로 접근하시면 구현에 문제가 없다고 생각합니다.
관련 핵심 변수는 PointIndirectLighting, IndirectIrradiance,
IndirectLightingSHCoefficients입니다. 참고하셔서 수정해 보시기 바랍니다.
2>compute shader skinning를 처리하는 부분.
'[UE4 root]\Engine\Shaders' 밑에 아래와 같은 file들이 있습니다.
GpuSkinCacheCommon.usf
GpuSkinCacheComputeShader.usf
참고하시기 바라고요.
님 입맛에 맞게 바꾸고 싶으시다면, GpuSkinCacheComputeShader.usf의
CalcBoneMatrix()와 UnpackedVertex()을 수정하셔서 사용하시기 바랍니다.
가능하면 material editor로 해결하시고요.
material editor로 해결이 불가능할 경우에만 수정하시기 바랍니다.
P.S.
참고로 usf는 unreal engine의 shader file이고요.
문법은 HLSL 문법을 사용합니다.
platform에 독립된 shader file이라서 Play Station 4, PC, iPhone, ... 등
지원 가능한 모든 platform에서 작동됩니다.
Tag:
안기훈, Kee Hoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS