Vulkan에서 작동하도록 HLSL 셰이더를 수정하면 텍스처 / 샘플러를 분리해야합니까?

SurvivalMachine

Vulkan에서 동일한 셰이더 코드를 사용하고 싶기 때문에 D3D12에서 사용되는 HLSL 셰이더를 수정하여 SPIR-V로 컴파일합니다. 다음은 셰이더입니다.

#if !VULKAN
#define layout(a)  
#else
#define register(a) blank
#endif

struct VSOutput
{
    float4 pos : SV_Position;
    float2 uv : TEXCOORD;
    float4 color : COLOR;
};

layout(binding=1) Texture2D<float4> tex : register(t0);
layout(binding=1) SamplerState sLinear : register(s0);

float4 main( VSOutput vsOut ) : SV_Target
{
    return tex.SampleLevel( sLinear, vsOut.uv, 0 ) * vsOut.color;
};

인덱스 1에 설정된 디스크립터에 유형이있는 경우 텍스처와 샘플러 모두에 동일한 바인딩을 사용할 수 있습니까? VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER아니면 두 개의 바인딩 슬롯 (하나는 텍스처 용, 다른 하나는 샘플러 용)을 사용해야합니까? 파이프 라인 생성이 오류와 함께 실패하기 때문에 묻습니다.

Vulkan 경고 : [ParameterValidation], 코드 : 9 : vkCreateGraphicsPipelines : 반환 된 VK_ERROR_INITIALIZATION_FAILED, 개체 초기화에 실패했음을 나타냅니다.

SPIR-V로 컴파일 된 GLSL 셰이더 대신이 셰이더를 사용하는 경우. 내 GLSL 셰이더는 다음과 같은 텍스처를 사용합니다.

layout (binding = 1) uniform sampler2D textureMap;
니콜 볼 라스

SPIR-V 및 Vulkan에 관한 한 SPIR-V와 동등한 기능이 작동해야합니다. 즉, 이미지 변수와 샘플러 변수를 모두 동일한 바인딩에 바인딩하여 사용할 COMBINED_IMAGE_SAMPLER수 있습니다.

VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 디스크립터 세트 항목은 별도의 샘플러 및 샘플 이미지 셰이더 변수를 통해 액세스 할 수도 있습니다.

과:

컴파일되는 진입 점에서 정적으로 사용되는 모든 값이 설명자 집합 레이아웃 바인딩의 설명자 유형과 호환되는 한 여러 셰이더 변수에 동일한 설명자 집합 및 바인딩 값을 할당하는 것은 유효합니다.

결합 된 이미지 / 샘플러 설명자 유형은 이미지 및 샘플러와 모두 호환됩니다.

물론 그렇다고해서 사용중인 유효성 검사 계층이이를 알고 있다는 의미는 아닙니다.) 마지막 인용문은 사양에 대한 최근 설명에서 가져온 것이므로 계층이 올바르게 구현하지 않았을 수 있습니다.

코드가 정확하다면 버그 보고서를 제출하는 것이 좋습니다.


layout (binding = 1) uniform sampler2D textureMap;

항상 지정하는 것이 좋습니다 set. KHR_vulkan_glsl은 기본적으로 0으로 설정되지만 명시적인 명령문이있는 것이 좋습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

GLSL 셰이더에서 여러 텍스처를 사용하면 텍스처가 덮어 쓰여집니다.

분류에서Dev

배열을 텍스처에 저장하고 버텍스 셰이더의 텍스처를 올바르게 샘플링하는 방법은 무엇입니까?

분류에서Dev

OpenGL : 하나의 변수로 여러 텍스처를 셰이더에 전달하려면 어떻게해야합니까?

분류에서Dev

HLSL의 텍스처 샘플러가 보간하지 않습니다.

분류에서Dev

일부 픽셀이 조각 셰이더에서 잘못된 텍스처를 샘플링하는 이유는 무엇입니까?

분류에서Dev

HLSL에서 노이즈없이 텍스처 값에서 UV 조정을 설정하려면 어떻게해야합니까?

분류에서Dev

셰이더에서 Unity의 텍스처를 병합하는 방법이 있습니까?

분류에서Dev

셰이더에서 Unity의 텍스처를 병합하는 방법이 있습니까?

분류에서Dev

텍스처 샘플러 2D의 상태를 확인하는 WebGL 셰이더

분류에서Dev

이 HLSL 픽셀 셰이더를 쿼드의 둥근 모서리로 수정하는 방법은 무엇입니까?

분류에서Dev

샘플 순서도처럼 연결선에 대한 텍스트를 추가하려면 어떻게해야합니까?

분류에서Dev

PhpStorm이 줄이 아닌 텍스트 시작 부분에 줄을 주석 처리하도록하려면 어떻게해야합니까?

분류에서Dev

OpenGLES에서 여러 개체의 여러 텍스처에 대한 조각 셰이더를 설정하는 방법은 무엇입니까?

분류에서Dev

iOS + SceneKit : 텍스처에 툰 셰이더를 적용하는 방법은 무엇입니까?

분류에서Dev

내 단위 테스트에서 컨트롤러 컨텍스트를 모의하여 문자열 함수에 대한 부분보기가 작동하도록하려면 어떻게해야합니까?

분류에서Dev

투명도로 텍스처를 여러 스프라이트로 분할 할 수있는 알고리즘을 구현하려면 어떻게해야합니까?

분류에서Dev

Firefox에서 셰이더를 수정할 때 Firefox 셰이더 편집기가 작동하지 않습니다.

분류에서Dev

내 버텍스 셰이더에서 gl_PointSize를 설정하면 uv가 전달되지 않습니다.

분류에서Dev

런처 진행률 표시 줄이 내 애플리케이션에서 작동하도록하려면 어떻게해야합니까?

분류에서Dev

런처 진행률 표시 줄이 내 애플리케이션에서 작동하도록하려면 어떻게해야합니까?

분류에서Dev

디스플레이 컨트롤러 관리를 이해하려면 어디에서 시작해야합니까?

분류에서Dev

셰이더 스위치 문보다 색상 팔레트에 텍스처를 사용하는 것이 어느 시점에서 더 효율적입니까?

분류에서Dev

셰이더의 인덱스를 사용하여 데이터 텍스처에서 텍셀 참조

분류에서Dev

Unity에서 셰이더가 다른 셰이더를 확장하도록 할 수 있습니까?

분류에서Dev

조각 셰이더 코드에서 샘플러를 선언하는 대신 MTLSamplerState를 사용하는 방법은 무엇입니까?

분류에서Dev

HLSL 셰이더의 텍스처 레지스터를 이름으로 반영

분류에서Dev

키를 Ctrl에 다시 매핑하고 텍스트 편집 중에 Ctrl처럼 작동하도록합니다.

분류에서Dev

SharpDX에서 셰이더 처리를 위해 GPU에 텍스처로드

분류에서Dev

SharpDX에서 셰이더 처리를 위해 GPU에 텍스처로드

Related 관련 기사

  1. 1

    GLSL 셰이더에서 여러 텍스처를 사용하면 텍스처가 덮어 쓰여집니다.

  2. 2

    배열을 텍스처에 저장하고 버텍스 셰이더의 텍스처를 올바르게 샘플링하는 방법은 무엇입니까?

  3. 3

    OpenGL : 하나의 변수로 여러 텍스처를 셰이더에 전달하려면 어떻게해야합니까?

  4. 4

    HLSL의 텍스처 샘플러가 보간하지 않습니다.

  5. 5

    일부 픽셀이 조각 셰이더에서 잘못된 텍스처를 샘플링하는 이유는 무엇입니까?

  6. 6

    HLSL에서 노이즈없이 텍스처 값에서 UV 조정을 설정하려면 어떻게해야합니까?

  7. 7

    셰이더에서 Unity의 텍스처를 병합하는 방법이 있습니까?

  8. 8

    셰이더에서 Unity의 텍스처를 병합하는 방법이 있습니까?

  9. 9

    텍스처 샘플러 2D의 상태를 확인하는 WebGL 셰이더

  10. 10

    이 HLSL 픽셀 셰이더를 쿼드의 둥근 모서리로 수정하는 방법은 무엇입니까?

  11. 11

    샘플 순서도처럼 연결선에 대한 텍스트를 추가하려면 어떻게해야합니까?

  12. 12

    PhpStorm이 줄이 아닌 텍스트 시작 부분에 줄을 주석 처리하도록하려면 어떻게해야합니까?

  13. 13

    OpenGLES에서 여러 개체의 여러 텍스처에 대한 조각 셰이더를 설정하는 방법은 무엇입니까?

  14. 14

    iOS + SceneKit : 텍스처에 툰 셰이더를 적용하는 방법은 무엇입니까?

  15. 15

    내 단위 테스트에서 컨트롤러 컨텍스트를 모의하여 문자열 함수에 대한 부분보기가 작동하도록하려면 어떻게해야합니까?

  16. 16

    투명도로 텍스처를 여러 스프라이트로 분할 할 수있는 알고리즘을 구현하려면 어떻게해야합니까?

  17. 17

    Firefox에서 셰이더를 수정할 때 Firefox 셰이더 편집기가 작동하지 않습니다.

  18. 18

    내 버텍스 셰이더에서 gl_PointSize를 설정하면 uv가 전달되지 않습니다.

  19. 19

    런처 진행률 표시 줄이 내 애플리케이션에서 작동하도록하려면 어떻게해야합니까?

  20. 20

    런처 진행률 표시 줄이 내 애플리케이션에서 작동하도록하려면 어떻게해야합니까?

  21. 21

    디스플레이 컨트롤러 관리를 이해하려면 어디에서 시작해야합니까?

  22. 22

    셰이더 스위치 문보다 색상 팔레트에 텍스처를 사용하는 것이 어느 시점에서 더 효율적입니까?

  23. 23

    셰이더의 인덱스를 사용하여 데이터 텍스처에서 텍셀 참조

  24. 24

    Unity에서 셰이더가 다른 셰이더를 확장하도록 할 수 있습니까?

  25. 25

    조각 셰이더 코드에서 샘플러를 선언하는 대신 MTLSamplerState를 사용하는 방법은 무엇입니까?

  26. 26

    HLSL 셰이더의 텍스처 레지스터를 이름으로 반영

  27. 27

    키를 Ctrl에 다시 매핑하고 텍스트 편집 중에 Ctrl처럼 작동하도록합니다.

  28. 28

    SharpDX에서 셰이더 처리를 위해 GPU에 텍스처로드

  29. 29

    SharpDX에서 셰이더 처리를 위해 GPU에 텍스처로드

뜨겁다태그

보관