2013-01-22 8 views
0

optix를 기반으로하는 프로젝트를 진행 중입니다. 프로 그래 시브 포토 닉 매핑을 사용해야하므로 샘플에서 프로 그레시브 포톤 매핑을 사용하려고하지만 투명성 재질은 구현되지 않습니다. 저는 인터넷 검색을 많이하고 투명도 자료 (예 : Glass, Tutorial, whitted)가 포함 된 다른 샘플도 이해하려고했습니다. 마침내 다음과 같은 해결책을 얻었습니다.cuda의 순차 광자 매핑의 투명성

  1. 히트 포인트 (교차점)을 찾기 (아래 시간)
  2. 은 당신이 할 수있는 다음과 같은함으로써 새로운 생성 점의 색상

를 사용하는 점

  • 에서 다른 선을 생성 또한 그 부분의 코드를 찾았습니다. 왜 나는 새로운 생성 된 광선 (위의 3 번)에 대해 검은 색 (.0f, .0f, 0.f)이되는지 이해하지 못합니다.

    optix::Ray ray(h, t, rtpass_ray_type, scene_epsilon); 
    HitPRD refr_prd; 
    refr_prd.ray_depth = hit_prd.ray_depth+1; 
    refr_prd.importance = importance; 
    
    rtTrace(top_object, ray, refr_prd); 
    
    result += (1.0f - reflection) * refraction_color * refr_prd.attenuation; 
    

    어떤 아이디어라도 받아 들여질 것입니다. 함수 rtTrace()를 사용하면 refr_prd.attenuation에 몇 가지 색상이 포함되어야합니다. 나는 reflection과 reflaction_color에 대해 언급했다. 당신은 그들을 무시할 수 있습니다.

  • +0

    rtTrace 메서드를 호출 할 때 어디에서 ray 인스턴스를 가져 오나요? – Sorceror

    +0

    @ Sorceror, 답장을 보내 주셔서 감사합니다. 나는 너의 질문을 정확하게받지 못했다. 나에게 좀 더 명확하게 해 주시겠습니까? – csuo

    +0

    당신은'ray' 변수 값 (어떤 경우)이 어디서 왔는지 알고 싶습니다.'rtTrace (top_object, ray, refr_prd);'메소드를 호출하고 있습니다. – Sorceror

    답변

    1

    문제를 진단하는 데는 여러 가지 방법이 있습니다.

    1. 반사 광선의 영향을 제거하여 굴절 된 광선의 기여도를 분리합니다.
    2. 프로그램이 잘못되어 있는지 확인하십시오. HitPRD :: 감쇠는 가장 가까운 히트 프로그램과 미스 프로그램 모두에 기록되어야합니다. Miss 프로그램이 호출되는 것 같으면 미스 색상을 분명히 나쁘게 설정하십시오 ([1,0,1]이 가장 좋아합니다).
    3. rtContextSetPrintLaunchIndex 또는 setPrintLaunchIndex와 함께 rtPrintf를 사용하여 제품의 개별 값을 인쇄하여 주어진 픽셀에서 어떤 용어가 0인지 확인하십시오. 주어진 실행 색인으로 출력을 제한하지 않으면 너무 많은 출력을 얻게됩니다. 또한 깊이를 인쇄하는 것이 좋습니다.