2017-10-05 10 views
0

HSLS에는 float (1-4) 및 많은 필드 (r, rr, rrrr, arar, ...) 뒤에 숫자가 있습니다. HLSL Tool 덕분에이 필드를 참조하십시오. Tim Jones에게 감사드립니다. D (이 도구가 없으면 어떻게 HSLS를 프로그래밍 할 수 있습니까?)HSLS float1, ..., float4 및 해당 필드

이 데이터 유형 및 해당 필드에 대한 참조를 찾으려고하지만 그것에 대해 아무것도 찾을 수 없습니다 (이유는 숫자 1-4와 해당 필드의 의미입니다 .C++ float는 float number, 여기에서는 what - 32 비트 부동 소수점 값

this article

플로트에 따르면)

을 떠된다 아래는 지금까지 내 진행합니다.

예를 들어 다음은 4 개 요소의 부호가있는 정규화 된 부동 변수 선언입니다.

snorm float4 fourComponentIEEEFloat;

그것은 내 질문에 대답하지 않습니다이 코드는 내가 약간 (gl_LocalInvocationID.xy)을 그 float2를 이해할 수

RWTexture2D<float4> testTexture   : register(u0); 

[numthreads(@value(threads_per_group_x), @value(threads_per_group_y), @value(threads_per_group_z))] 
void main 
(
    uint3 gl_LocalInvocationID : SV_GroupThreadID, 
    uint3 gl_GlobalInvocationID : SV_DispatchThreadId 
) 
{ 
    testTexture[gl_GlobalInvocationID.xy].xyzw = float4(float2(gl_LocalInvocationID.xy)/16.0f, 0.0f, 1.0f); 
} 

을 의미합니까 2 플로트

testTexture[gl_GlobalInvocationID.xy].xyzw = float4(float2(gl_LocalInvocationID.xy)/16.0f, 0.0f, 1.0f); 
무엇

은 동일합니다.

testTexture[gl_GlobalInvocationID.xy].xyzw = float4(gl_LocalInvocationID.x/16.0f, gl_LocalInvocationID.y/16.0f, 0.0f, 1.0f); 

그러나 그것이 맞는지, 옆에 있는지, r, rr, rrrr, arar 필드는 어떨까요? 나는 이전에 언급했다.

읽어 주셔서 감사합니다.

답변

1

이 필드는 실제 필드가 아니지만 소스 레지스터 스윕 (doc)입니다.

float4은 4 성분 플로트 벡터이며, 여기서 구성 요소는 x, y, z 및 w입니다. float4는 종종 색상으로도 사용되기 때문에 이러한 구성 요소는 r, g, b 및 a로도 처리 할 수 ​​있습니다 (따라서 .xyzw는 .rgba와 같습니다).

소스 스위 즐링은 교환 줄이거 나 구성 요소 인라인을 반복 할 수 있습니다, 그래서 당신 만의 XY 구성 요소를 필요한 경우 float3 vec 당신은 float2(vec.x, vec.y) 같은 vec.xy 대신 뭔가를 쓸 수 있습니다. 일부 계산을 위해 float4 color의 색상 채널을 바꾸려면 예를 들어 color.bgra을 쓰면 쉽게 빨간색과 파란색 구성 요소를 교체 할 수 있습니다. 마지막으로 vec.xxxx과 같은 채널을 복제하여 float4vec.x을 모두 네 구성 요소에 포함시킬 수도 있습니다. 이 방법을 조합하여 사용할 수도 있습니다 (예 : vec.yzxx).