요약
Mari 용 사용자 정의 셰이더, 레이어 또는 노드 XML을 작성할 때 사용자 정의 GLSL 함수를 별도의 파일에 포함하는 것이 더 편리한 경우가 있습니다. 이러한 함수를 별도의 파일에 유지하기로 선택한 경우 함수가 자체 특수 처리를 실행할 수 있도록 하는 큐브맵 텍스처 조회를 사용해야 합니다.
이 문서에서는 Mari 에서 원시 텍스처 조회 호출을 수행하여 동일한 호출이 다양한 셰이더 모드와 향후 Mari 릴리스 간에 일관되게 작동하도록 하는 방법을 설명합니다.
추가 정보
이것이 Mari 의 공식 기능은 아니지만, 이전에는 Custom Shader를 개발할 때 Custom Node의 imagecube 속성에서 SamplerCube를 얻을 수 있었습니다. 이를 통해 과거 Mari 버전에서는 사용자가 GLSL의 텍스처() 기능을 활용하는 원시 텍스처 조회를 생성할 수 있었습니다.
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);
}
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요