OpenGL을 사용하면 여러 프로그램간에 동일한 셰이더를 공유 할 수 있습니다. 적은 양의 메모리와 셰이더 핸들을 저장하는 것 외에도 GPU 측 성능 이점이 있습니까?
OpenGL을 사용하면 여러 프로그램간에 동일한 셰이더를 공유 할 수 있습니다. 적은 양의 메모리와 셰이더 핸들을 저장하는 것 외에도 GPU 측 성능 이점이 있습니까?
답변:
GPU 측 성능 이점이 의심됩니다.
예를 들어 일반 셰이더를 프로그램에 바인딩하면 효율적인 구현으로 해당 셰이더와 해당 프로그램의 다른 셰이더 사이에 사용되지 않는 속성을 제거하고 결과적으로 셰이더 논리를 단순화 할 수 있어야합니다. 물론 이것은 수동 튜닝 셰이더 조합에 비해 실질적인 이점은 아니지만 복잡성 / 조합을 관리하고 드라이버가 수행해야하는 컴파일 수를 줄이는 데 도움이됩니다.
그러나 비효율적 인 드라이버-컴파일러 구현에 대한 관점에서이를 수행하는 데에는 단점이있을 수 있습니다. 그리고 일부 구현이 있습니다 : http://aras-p.info/blog/2010/09/29/glsl-optimizer/ : 일부 구현이 잘못 될 수있는 간단한 것들을 확인하십시오 .