요약
Mari 용 커스텀 셰이더, 레이어 또는 노드 XML을 작성할 때, 커스텀 GLSL 함수를 별도의 파일에 저장하는 것이 더 편리할 때가 있습니다. 이러한 함수를 별도의 파일에 저장하려면, 해당 함수가 자체적인 특수 처리를 실행할 수 있도록 하는 cubemap texture-lookup 함수를 사용해야 합니다.
이 문서에서는 Mari 에서 원시 텍스처 조회 호출을 만드는 방법을 설명합니다. 이를 통해 동일한 호출이 다양한 셰이더 모드와 Mari 의 향후 릴리스 간에 일관되게 작동할 수 있습니다.
더 많은 정보
이는 Mari 의 공식 기능으로 간주되지 않지만, 이전에는 커스텀 셰이더를 개발할 때 커스텀 노드의 imagecube 속성에서 samplerCube를 얻을 수 있었습니다. 이를 통해 이전 Mari 버전에서는 사용자가 GLSL의 texture() 함수를 활용하는 원시 텍스처 조회를 생성할 수 있었습니다.
Mari 3.4v1과 4.1v1에서 Mari 의 셰이더 시스템에 대한 내부 개선으로 인해 Mari 이제 텍스처 조회에 간접 변수를 사용합니다.
당신이 해야 할 일
이러한 변경 사항을 해결하고 원시 텍스처 조회를 생성하려면 다음이 필요합니다.
- XML에 Texture.glslh를 포함합니다.
- 텍스처 샘플러를 cubemapToken 으로 선언하세요.
- GLSL에서
texture()및textureLod()사용되는 것과 같은 방식으로 텍스처 조회를 수행하려면mriTexture()또는mriTextureLod()를 활용하세요.
개발자 예제
노드 XML 파일의 호출자 측에서 사용자 정의 GLSL 함수에 대한 호출은 아래와 같이 이루어질 수 있습니다.
...
<Attribute Name="Cubemap" PrettyName="Image" Type="imagecube"></Attribute>
...
textureSampleColor = customCubemapLookup( $Cubemap, coords, lod );
그런 다음 GLSL 헤더 파일에서 cubemapToken 인수를 받는 사용자 정의 함수를 다음과 같이 선언할 수 있습니다.
//! include | Texture.glslh
vec4 customCubemapLookup(cubemapToken cubemapTexture, vec3 dir, float lod);
이 외에도 GLSL 소스 코드 파일 내에서 cubemapToken 인수를 받는 사용자 정의 함수를 정의할 수 있습니다. mriTexture() 및 mriTextureLod() 함수를 사용하여 실제 텍스처 값을 조회할 수 있습니다. 예:
#version 150
//! include | Texture.glslh
vec4 customCubemapLookup(cubemapToken token, vec3 coords, float lod)
{
return mriTextureLod(token, coords, lod);
}
추가 도움말
어려움을 겪고 계신다면 지원 티켓을 생성하여 이 문서에서 요청하는 정보를 제공해 주세요.
Q100090: Mari 문제 보고 시 지원팀에 보낼 정보
지원 티켓을 여는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
Q100064: 지원 티켓을 제출하는 방법
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요