2010-06-25 2 views
2

현재 GLSL을 배우고 있습니다. 일단 셰이더 언어 중 하나를 배우면 다른 언어 중 하나를 배우는 것이 그리 어렵지 않게 보일 것입니다. wxWidgets와 같은 위젯 툴셋을 학습 한 다음 Qt로 전환하는 것과 비슷합니까? 하나의 위젯 툴셋에서 어떤 일이 일어나고 있는지 알게되면 다른 툴셋은 궁극적으로 어느 시점에서 거의 동일한 작업을 수행하기 때문에 비슷한 작업을 수행하게됩니까? 하나의 셰이더 언어에서 다른 셰이더 언어로 전환 한 경험은 무엇입니까?셰이더 언어간에 큰 차이점이 있습니까?

답변

4

HLSL은 GLSL과 약간의 차이점이 있습니다. 내가 읽은 것과 다른 점은 없습니다. 거기에 몇 가지 번역 도구가 있습니다. SourceForge 프로젝트 HLSL To GLSL tool이 있습니다. 또한 NVidia Cg toolkit은 HLSL 또는 GLSL을 생성 할 수 있다고 생각합니다.

6

Cg와 HLSL은 거의 동일합니다 (동일한 내장 함수 이름). GLSL은 조금 다르다 (예 : lerp 대신 mix, main과 같은 기능 사용)하지만 전반적인 전환은 여전히 ​​쉽습니다. 유일한 차이점은 세부 정보 및 해당 API (즉, 행렬 저장 순서와 같은 항목)에 있습니다. 쉐이딩 언어를 전환하면 GUI 툴킷 사이의 전환보다 훨씬 쉽게

...

-3

OpenGL을에서 다이렉트 3D 거짓말의 기원. 마이크로 소프트는 OpenGL API를 특정 시점으로 다시 프로그래밍했기 때문에 언어가 유사해야합니다.

+0

TBH ARB는 계속해서 이러한 모든 기술을 도입 한 마이크로 소프트 뒤에있었습니다. GLSL은 3D Labs에서 OpenGL 2로 가져온 수정 사항의 일부입니다. 또한 GL의 추진은 Microsoft가 그래픽 카드 제조업체에게 다음 API 수준을 알리는 직접적인 결과였습니다 (심지어 특정 부분을 다시 돌아가더라도 타임스). Open GL은 지금까지 그래픽 카드의 추세에만 반응 할 수있었습니다. 미시시피는 적어도 일이 진행되는 방식을 정의하려고 노력할 강한 영향력을 가지고 있습니다. – Goz

+0

@Goz 그저 사실 일뿐입니다. NVIDIA는 DirectX가 OpenGL을 지원하기 전에 OpenGL에 대한 저수준 쉐이더 기능을 내 보았습니다. 기본적으로 하드웨어 제조업체는 새로운 기능을 추가 할 때마다 바로 OpenGL을 OpenGL으로 내보낼 수 있고 DirectX는 MS를 기다려야합니다 API를 범하는 것. NVIDA 쉐이더 물건은 HLSL/GLSL만큼 코드 작성하기가 쉽지 않았지만,이 카드를 지원 한 카드가 출하되는 순간부터 많이있었습니다. (OpenGL이 빛나는 곳, 공급 업체 확장을 염두에두고 설계된 DirectX는 아닙니다.) – Spudd86

+0

@ spudd : GL이 앞으로의 혁신을 추진하기 위해 거의하지 않은 것을 얻었습니다. 그들은 거의 그랬다. 원래의 GL3 스펙은 그렇게했을 것입니다. Khronos는 모든 사람들 앞에서처럼 병에 담았습니다. 확장 기능은 큰 보너스이지만 똑같이 GL의 가장 큰 약점입니다. 사람들이 카드 별 코드 경로를 작성하도록 강요함으로써 플랫폼 간 호환성을 저해합니다. 그럴 필요가 있다면 플랫폼 별 코드 경로를 작성하지 않는 이유는 무엇입니까? 그것은 개인적으로 내 엔진에 DirectX, OpenGL 및 OpenGL ES 코드 경로가 있습니다.그게 힘들지는 않지만 신이 더 쉬워 짐 :) – Goz

1

약간 제한된 경험으로, 나는 여기에 모든 사람들이 매우 유사하고 그것들을 전환하는 데 문제가되지 않는다는 것에 동의합니다. 그러나, 대부분의 OpenGL/DirectX 충돌의 경우처럼 HLSl이 사용하기에 더 재미있는 몇 가지 편리한 함수를 가지고 있음을 알았습니다. 나는 포화과 같은 작은 것들을 말하고 있습니다. 그러나 사소한 구조적 차이를 넘어 입력과 같은 기본 개념은 100 % 동일합니다.

즐기십시오! 셰이더는 아주 재미 있습니다.

1

맞습니다 - GLSL/HLSL/Cg 쉐이딩 언어는 C 프로그래밍 언어의 하위 집합이므로 매우 유사합니다.

관련 문제