GLSL 쉐이더의 올바른 파일 확장자는 무엇입니까? [닫은]


127

glsl 음영을 배우고 있으며 다른 파일 형식을 발견했습니다. 사람들이 정점과 프래그먼트 셰이더 .vert.frag확장 기능을 제공하는 것을 보았습니다 . 그러나 나는 또한 본 적이 .vsh.fsh단일 함께 모두 쉐이더를 확장, 심지어 .glsl파일. 표준 파일 형식이 있는지 또는 '올바른'형식인지 궁금합니다.


10
내가 아는 한 OpenGL은 디스크에서 읽지 않기 때문에 "확장 된"확장자가 없습니다.
zneak

2
어떤 사람들은 .vs와 .fs (및 .gs)를 호출하여 내부에 무엇이 있는지 명시 적으로 만듭니다. 그러나 zneak이 말했듯이, "정확한"것은 실제로 중요하지 않습니다.
데이먼

11
gedit를 사용하는 .glslv.glslf구문 강조를 선택. 그것이 내가 어디에서 중요한지 보았던 유일한 곳입니다.
Piotr Praszmo 2016 년

답변:


90

GLSL 쉐이더에는 표준 파일 확장자가 없습니다. 가장 일반적인 도구는 아마도 3D Labs가 일부 도구에서 사용하는 확장 기능이므로 아마도 .vert.frag입니다. 그러나 그것은 모든 형태의 표준 확장에 관한 것입니다.


20
.vert | .frag가 셰이더의 확장 이름이라고 생각하지 않습니다. 확장자는 파일의 일반 클래스를 식별하는 것입니다. 아마도 vertex.glsl과 fragment.glsl이라고 불렀을 것입니다.
Autodidact

5
나도 놀랐지 만 정점과 프래그먼트 셰이더, @SandeepDatta 사이의 구문에 약간의 차이가 있습니까? .h와 .c는 공통점이 많지만 다른 방식으로 사용됩니다.
Joseph Humfrey 14

7
@SandeepDatta .hpp.cpp? .h.c? C / C ++ 헤더와 소스 파일 사이보다 정점과 프래그먼트 셰이더간에 구문과 의미상의 차이가 더 많습니다.
Miles Rout

1
@MilesRout .cc에 대해 이야기조차 못해

42
GLSL Reference Parser 또는 Reference Compiler 라고도하는 GLSLang 은 3Dlabs가 개발 한 도구 중 하나입니다 . opengl.org 및 khronos.org 모두에 SDK 도구로 나열되어 있습니다. README의 목록은 쉐이더 파일을 기대하는 파일 확장자 : .vert(정점), .frag(조각), .tesc(테셀레이션 제어), .tese(테셀레이션 평가), .geom(기하), .comp(계산).
TachyonVortex

93

사양에는 공식적인 확장이 없습니다. OpenGL은 파일에서 셰이더 로딩을 처리하지 않습니다. 쉐이더 코드를 문자열로 전달하기 때문에 특정 파일 형식이 없습니다.

그러나 Khronos의 참조 GLSL 컴파일러 / 검증 기인 glslang 은 다음 확장을 사용하여 파일의 셰이더 유형을 결정합니다.

  • .vert -버텍스 쉐이더
  • .tesc 테셀레이션 컨트롤 셰이더
  • .tese 테셀레이션 평가 셰이더
  • .geom -지오메트리 쉐이더
  • .frag -프래그먼트 셰이더
  • .comp -계산 셰이더

18

확장명으로 파일 형식을 식별하는 것은 Windows에만 해당됩니다. 다른 모든 운영 체제는 다른 접근 방식을 사용합니다. MacOS X은 파일 유형을 파일 시스템 항목의 특수 메타 데이터 구조로 저장합니다. 대부분의 * nix는 알려진 "매직 바이트"데이터베이스에 대해 내부 구조를 테스트하여 파일을 식별합니다. 그러나 텍스트 편집기는 확장명을 사용합니다.

어쨌든 GLSL 소스는 다른 프로그램 소스 파일과 같습니다. 일반 텍스트이며 파일 형식입니다.

원하는 확장명을 선택할 수 있습니다. 다음과 같은 이름을 사용합니다.

  • ts.glsl
  • gs.glsl
  • vs.glsl
  • fs.glsl

그러나 그것은 나의 선택이며 기술적으로 내 프로그램은 명명이나 확장 체계를 강요하지도 않습니다. 명명은 인간이 그 안에 무엇이 있는지 읽고 이해하는 것입니다. 공통의 주요 확장자를 가지려면 하나의 파일 확장자 세트에 대해서만 구문 상한 규칙이 필요합니다.


5
OS X는 수년 동안 주로 파일 확장자를 사용하여 다운 보트되었습니다.
Frederik Slijkerman

6
@FrederikSlijkerman : 아뇨, 그렇지 않습니다. MacOS X는 기본적으로 유닉스이며 파일 확장자는 사물을 식별하는 데 사용되지 않았습니다. 예, 표준 유형은 표준 파일 확장자를 갖지만 사람이 읽을 수있는 것입니다. 파인더는 파일 확장자를 일부 유형의 휴리스틱으로 사용할 수 있습니다. 그러나 헤더 또는 일부 매직 바이트로만 파일을 식별 할 수 있으면 해당 파일을 사용합니다. 다른 유닉스 기반 시스템처럼.
datenwolf

3
+1 나는 그것들을 effect-name -fs.glsl 또는 effect-name -vs.glsl로 명명합니다.
legends2k

9
나는 OS X 논쟁에서 2 년 늦었다는 것을 알고 있지만, 나는 2 센트를 던져야 할 것 같은 느낌이 들었다. UNIX 계층 위의 모든 항목은 LaunchServices를 사용하여 파일 연결을 결정합니다. 각 파일에는 com.stackoverflow.file메타 데이터로 저장된 유형 식별자 가 있습니다. LaunchServices는 메타 데이터 항목이 존재하는 경우 먼저 MIME 유형에서 추측합니다. 그렇지 않으면 확장명을 찾습니다. 일치하지 않으면 HFS 작성자 코드를 찾습니다. 아무것도 없으면 포기합니다. LaunchServices는 헤더 또는 매직 바이트로 파일을 식별하지 않습니다.
zneak

2
이는 OS X에서 파일 유형을 결정하는 가장 일반적인 방법은 확장자입니다. 그러나 이것은 어떤 파일을 열 때 어떤 응용 프로그램을 사용해야하는지 식별하기위한 것입니다. 응용 프로그램에서 파일을 열면 콘텐츠 형식에 맞는 확장명인지 여부에 관계없이 파일에서 원하는 작업을 결정할 수 있습니다.
zneak

7

다른 사람들이 언급했듯이 가장 엄격한 의미의 정답은 없습니다. Sublime (v2 및 v3에 대해 확인 됨)은 구문 강조 및 유효성 검증에 .vert 및 .frag도 예상한다는 점을 언급합니다.


2
Sublime에 GLSL 라이브러리가 설치된 경우에만 이것이 사실이라고 생각합니다 (예 : github.com/WebGLTools/GL-Shader-Validator)- 기본 Sublime은 확장을 인식하지 못합니다.
Air

당신이 링크 한 lib는 숭고한 가장 인기있는 GLSL lib이고, 나는 숭고한 것으로 기대하는 것을 호출했습니다. 당신이 그것을 과장이라고 부르면 유죄를 인정할 것입니다. 그러나 예, 잘 모르는 확장 프로그램을 무시하면서 텍스트 문서를 여는 것처럼 충실한 텍스트 편집기가 최소한 숭고한만큼 옳습니다.
위버 마운트

1
현재 sublime-glsl ( github.com/euler0/sublime-glsl )은 가장 인기있는 GLSL 플러그인이며 다음과 같은 확장 세트를 허용합니다 vs, fs, gs, vsh, fsh, gsh, vshader, fshader, gshader, vert, frag, geom, tesc, tese, comp, glsl. 다양한 선택이 가능합니다 :)
F Lekschas

-1

쉐이더를 작성하는 방법에는 두 가지가 있습니다.

버텍스 셰이더와 프래그먼트 셰이더 컨텐츠를 char *변수에 저장하고 셰이더를 컴파일, 링크 및 프로그램에 연결할 수 있습니다.

또 다른 방법은 원하는 확장자로 별도의 정점 및 조각 셰이더 파일을 작성하고 프로그램에 셰이더를 컴파일, 링크 및 첨부하기 위해 파일을 읽는 것입니다.

따라서 .vert / .frag, .vsdr / .fsdr 등과 같은 명명 규칙은 읽는 방법을 알고있는 한 모두 유효합니다 ...


-2

이미 여러 응답에서 다루었 듯이 실제로 표준은 없습니다. 가장 유용한 접근 방식을 채택하는 것은 귀하의 책임입니다.

유형별 셰이더 확장을 사용하면 이점을 볼 수 있지만 쉘이 파일을 한 번 사용하는 방법 만 정의하면되기 때문에 모든 유형의 셰이더에 .glsl 확장명을 사용하는 것이 좋습니다.

마찬가지로 Notepad ++에서 셰이더 파일을 편집하는 경우 파일 확장자를 하나만 지정하여 언어 별 구문 강조 표시를 모든 셰이더 파일에 자동으로 적용하도록 구성 할 수 있으므로이 옵션도 좋습니다.

이 접근 방식의 단점은 파일 이름으로 셰이더 유형을 결정하기 위해 자체 명명 규칙을 사용해야하지만 이점은 비용을 능가한다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.