지금 그 유명한 ray tracing in one weekend 보면서 따라 구현해보고 있는데
이게 구조가 레이를 쏴서 오브젝트에 닿으면 재질에 따라서 적당히 반사된 레이를 구하고, 거기서 다시 레이를 쏘는 방식이잖아?? 최종적으로 하늘에 닿으면 하늘 색깔을 주고 ㅇㅇ
그래서 결과적으로 재질 albedo(반사율?)가 계속 곱해지는 형식으로 색을 표현하고 또 그걸 여러번 샘플링해서 평균내는 방식
내가 이해한게 맞음??
여기는 pbr, brdf 같은 개념이 아예 없는거 같은데 그런건 어디서 알수가 있는거임?
그리고 제목 패스 트레이서랑 레이트레이서랑 뭐가 다른지도 궁금함..
- dc official App
간단하게 레이트레이스는 광원에서 레이가 출발, 패스 트레이스는 화면(픽셀)에서 레이가 출발 이 차이 아님??
두 용어는 그냥 그래픽스 관습용어라 의미로 해석하려고하면 안됨 레이트레이싱은 diffuse반사는 계산 안하고 specular만 사용해서 계산하는 거임 옛날에 컴퓨터가 구져서 diffuse반사까지 계산할 하드웨어가 안됐음 그러다가 gpu나오고 나서 diffuse도 계산하기 시작하면서 패스트레이싱을 씀 게임에 보면 패스 트레이싱이라 안하고 레이트레이싱이라고 하잖아. 그 게임들보면 diffuse가 계산안되서 뭔가 현실처럼 거친 느낌은 없고 반짝거리잖아 그리고 이미지 렌더링할 때는 주로 패스 트레이싱을 쓰고, 패스 트레이싱은 아직도 리얼타임으로 못돌림 느려서
이 글이 이해가 안되면 너는 아마 diffuse랑 specular 차이를 모르는 걸꺼임
디퓨즈랑 스페큘러는 레이트레이싱 패스트레이싱의 문제가 아니라 머티리얼 관련 문제같은데... 내 기억으로는 첫댓글 말이 맞음
레이트레이싱은 말 그대로 '광선을 추적하는 방법'에 대해서 이야기하는거고 부딪힌것에 대해 어떻게 렌더할지는 BRDF로 넘어가는데 왜 디퓨즈 스페큘러 이야기가 나오는지 모르겠다...
그리고 요즘 나오는 게임들이 디퓨즈를 계산 안한다는건 무슨 헛소리임? 걔네는 PBR 렌더링 돌리느라 기존 디퓨즈 스펙큘러 개념을 벗어나서 글로시네스 이런걸로 계산하니까 디퓨즈라는 용어를 안쓰는거고... 미세면 방정식같은거 생각하면 거친 부분도 제대로 고려하고 렌더하는게 맞다
생각해보니까 첫댓의 반대네
스크린에서 라인을 따라간다고 해보셈 그럼 첫번째 물체에 부딪힐거임, 그런데 그 첫번째 지점으로 들어오는 빛들이 무수히 많을건데 정반사(specular)각도만 고려해서 추적하는게 레이트레이서고 패스 트레이서는 디퓨즈 반사 범위로 추적하는거임, 그래서 고려해야할 범위가 더 넓어짐 둘다 화면에서 출발하는거고 , 광원에서 출발하는건 photon mapping임, 그리고 게임에서는 보통 레스터라이저랑 레이트레이싱이랑 섞어 쓰는데 스펙큘러랑 그림자를 레이트레이싱으로 계산해서 레스터라이징한 이미지랑 섞어 씀 그런데 보면 스펙큘러를 너무 강조하다보니까 반짝거리는 느낌이 너무강함, 레스터랑 안섞어쓰고 오로지 레이트레이싱만 쓰면 완전히 반짝거리고
여기서 디퓨즈의 의미를 색으로 생각하는거 같은데 디퓨즈는 난반사임 이 맥락에서는 난반사 방향으로 추적한다는거임
내가 공부가 부족했던게 맞네...ㅋㅋ; 배워감
레이트레이싱은 그냥 레이를 쏜다는 개념 자체를 말하는경우고, 패스트레이싱은 렌더링 방정식을 푸는 방법중에 하나임. 더 정확히는 mote carlo raytracing의 특수한 형태. 리얼타임에서 레이트레이싱을 쓴다 하면, perfect reflection 하나만 고려하는 방법을 씀.
패스트레이싱은 리얼타임에서는 사용 불가능함. 히트 포인트기준으로 모든 반구에 대해 샘플링해서 수렴할때까지 기다려야하는데 이게 말도 안되게 코스트가 큼. 그래서 offline rendering으로 씀. 특히 sky같은 곳으로 path termination 안하고 씬에 라이트 소스가 엄청 없다면, 수렴하는데 시간이 훨씬 더 걸림. 블렌더 cycles같은게 패스트레이서임.
PBR은 쉐이딩할때 그 방식을 phong같은 가짜 라이팅 모델 말고, 좀 더 현실적인 모델을 사용해보자 하는 방식을 말함. brdf, bsdf같은건 material function이라고 하기도 하는데, 히트 포인트 기준으로 in, out going direction을 넣어주면 빛을 얼마나 흡수(또는 반사) 시킬지 알려주는 함수임. 거울같은건 perfect reflection direction이 아니면 죄다 0이겠지? matt 한 재질이면 좀 엉뚱한 방향이어도 반사하는 빛이 좀 있겠고 ㅇㅇ
패스트레이서든, 리얼타임 레이트레이싱이든, 레스터라이징이든 빛을 계산할 때는 다 PBR 모델을 씀 요즘은.
static 한 애들은 sh 베이킹해둬서 처리하면 되지 않낭...? 그럼 dynamic 한 애들이 문제네 언리얼은 루멘카드 같은거 만들어서 실시간 캐싱해두는거 같은데
sh는 잘 모름 님이 설명 좀 해주셈
얘들아 글 지우지말아줘 너네 대화하는거에서 많이배워감