HLSL은 DX와 붙고, GLSL은 OGL과 붙는다.
Cg는 Interface와 Unsized Array가 있다. Cg는 산업전반에서 많이 사용되고 있지만, 한동안 정체인 상태이고, crytek같은 게임회사와, Maya도 사용하고 havok도 HavokFX에 사용하고 있다. 외부라이브러리 사용하기 싫어하지 않는다면 Cg를 사용하면 좋다.
GLSL 프로파일이 있어서 Cg로 짠 코드를 바로 GLSL로 만들수도 있다.
GLSL의 단점: 드라이버 지원미약
Cg는 새로 dll만 떨구면 되서 편함.
GLSL은 FX 스타일의 효과가 없고, Cg에는 CgFX가 있다.
HLSL은 대부분의 D3D 어플에선 잘 되지만, 유연성이나 기능면에선 Cg가 낫다.
CgFX는 D3D의 FX보다 낫다. (State나 Mode가 더 많다.)
FXComposer가 CGFX를 지원하는 이유다.
D3D의 FX에는 state나 mode가 제한적이다. Bump mapping 할 때는 괜찮겠지만 더 복잡한 쉐이더를 만들 때는 한계가 있다.
현재 Cg에서는 의미없는 API가 렌더링 루프에 들어가서 느려지는 문제가 있다.
셋 다 할만한다. 가장 안좋아하는 거는 GLSL인데 형안정성을 조금더치중하는것때문에.
nVidia꺼에서GLSL을사용하면 타입에러는 모두 없애준다. 포터블한 코드를 만들 수는 없어서
좀매 짜증난다.
Cg는 좋다. 현재 API를 사용할 때에는 state를 관리하는데 좀더 신경써야 한다.(속도측면에서)
state set이 되면 shader랑 effect를 쉽게 붙일 수 있다.
API를 줄이는 것이 중요하다.
Cg는 cgc만으로도 가치가 있다. 하이레벨언어를 ARB_*_program 어셈블리를 만들 수 있으니 D3D와 OGL언어를 타겟으로 한다.