호스트 애플리케이션과 효과 매개 변수 간에 값을 전송하는 경우 원본 데이터 형식(호스트 애플리케이션)이 대상 데이터 형식(효과 매개 변수)과 일치할 때 데이터가 예상대로 기록됩니다. 데이터 형식이 다르면 원본 데이터가 대상에 맞게 다시 정렬될 때 캐스팅이 발생합니다.
DXSAS는 다음 형식 변환 규칙을 정의합니다. 효과(.fx) 및 HLSL 형식 변환 규칙의 상위 집합입니다. 또한 DXSAS는 호스트 애플리케이션에서 바인딩된 매개 변수로 전송되는 값에 영향을 줄 수 있는 일부 매개 변수 값 한정자 정의합니다.
형식 캐스팅
다음 표에서는 한 데이터 형식이 다른 데이터 형식으로 전송될 때 발생하는 캐스팅을 나열합니다.
| 원본 형식 | 목적지 유형 | 행동 |
|---|---|---|
| 뜨다 | 정수 | 0을 향해 반올림합니다. |
| float(부동 소수점), int(정수) | bool | 0(int) 또는 0.0(float)와 같지 않은 값은 참으로 간주되며, 그렇지 않은 경우 이 값은 거짓으로 간주됩니다. |
| int | 뜨다 | |
| bool | int, float | False가 0으로 변환됩니다. True가 1로 변환됩니다. |
| texture1D, texture2D, texture3D, textureCUBE | 텍스처 | 대상 텍스처는 원본 텍스처 형식으로 처리됩니다. |
| 문자열 | texture1D, texture2D, texture3D, textureCUBE | 문자열 값은 리소스 주소로 처리되고 매개 변수 초기화 주석동일한 방식으로 확인됩니다. 리소스 주소를 확인할 수 없는 경우 캐스트가 유효하지 않으며 호스트 애플리케이션에서 오류를 반환해야 합니다. 리소스가 제대로 확인되면 식의 형식이 확인된 리소스와 동일한 형식으로 처리됩니다. |
클래스 캐스팅
위에서 설명한 형식 캐스팅 규칙 외에도 DXSAS는 클래스 형식 간에 변환하는 데 필요한 캐스팅 규칙 집합을 정의합니다. 열 행렬(N x 1), 행 행렬(1 x N) 및 숫자 구조체는 벡터로 처리됩니다.
효과 행렬 매개 변수 및 HLSL 행렬 변수는 값이 행 주 행렬인지 열 주 행렬인지를 정의할 수 있습니다. 그러나 DirectX API는 항상 D3DMATRIX 처리하고 D3DXMATRIX 행 주체로 처리합니다.
| 원본 클래스 | 목적지 클래스 | 행동 |
|---|---|---|
| 스칼라 | 스칼라 | 형식 캐스팅을 적용합니다. |
| 스칼라 | 벡터 | 형식 캐스팅에 설명된 형식 캐스팅 및 변환 동작을 적용한 후 스칼라 소스 값을 대상 벡터의 모든 구성 요소에 복제합니다. |
| 스칼라 | 행렬 | 형식 캐스팅에 설명된 형식 캐스팅 및 변환 동작을 적용한 후 스칼라 소스 값을 대상 행렬의 모든 구성 요소에 복제합니다. |
| 스칼라 | 객체 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 스칼라 | 구조 | 대상 구조에 숫자 요소만 포함된 경우에만 유효합니다. 유효한 경우 형식 캐스팅에 설명된 형식 캐스팅 및 변환 동작을 적용한 후 스칼라 소스 값을 대상 구조의 모든 구성 요소에 복제합니다. |
| 벡터 | 스칼라 | 대상 스칼라는 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 벡터의 첫 번째 구성 요소 값을 받습니다. |
| 벡터 | 벡터 | 대상 벡터에 원본 벡터보다 많은 구성 요소가 있는 경우 잘못된 캐스트입니다. 대상 벡터는 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 벡터의 가장 왼쪽 값을 받습니다. 원본 벡터의 나머지 오른쪽 구성 요소가 손실됩니다. |
| 벡터 | 행렬 | 원본 벡터에 대상 행렬과 동일한 수의 구성 요소가 없는 한 잘못된 캐스트입니다. 캐스트가 유효한 경우 벡터 간 캐스트의 동작이 적용됩니다. |
| 벡터 | 객체 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 벡터 | 구조 | 대상 구조에 숫자 요소만 있고 원본 벡터에 구성 요소가 있는 것보다 더 많은 요소가 포함되지 않은 경우에만 유효합니다. 대상 구조체의 요소는 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 벡터의 가장 왼쪽 구성 요소를 받습니다. |
| 행렬 | 스칼라 | 대상 스칼라는 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 행렬의 왼쪽 위 값 값을 받습니다. |
| 행렬 | 벡터 | 원본 행렬에 대상 벡터와 동일한 수의 구성 요소가 없으면 캐스팅이 잘못되었습니다. 캐스트가 유효한 경우 위의 벡터-벡터 캐스팅 동작이 적용됩니다. |
| 행렬 | 행렬 | 대상 행렬에 원본 행렬보다 더 많은 구성 요소가 있는 경우 잘못된 캐스트입니다. 대상 행렬은 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 행렬의 왼쪽 위 값을 받습니다. 원본 행렬의 나머지 오른쪽 아래 구성 요소는 손실됩니다. |
| 행렬 | 객체 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 행렬 | 구조 | 구조체의 크기는 행렬의 크기와 같아야 하며 구조체의 모든 구성 요소는 숫자여야 합니다. |
| 객체 | 스칼라 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 객체 | 벡터 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 객체 | 행렬 | 캐스트가 잘못되었습니다. 호스트 애플리케이션은 오류를 반환해야 합니다. |
| 객체 | 객체 | 개체의 형식이 동일하고 형식 캐스팅정의된 동작에 따라 유효한지 확인합니다. |
| 구조 | 스칼라 | 원본 구조에 하나 이상의 숫자 멤버가 포함되어 있는 경우 유효합니다. 대상 스칼라는 형식 캐스팅설명된 형식 캐스팅 및 변환 동작을 적용한 후 원본 구조의 첫 번째 숫자 멤버 값을 받습니다. |
| 구조 | 벡터 | 원본 구조는 적어도 벡터의 크기여야 합니다. 첫 번째 구성 요소는 대상 벡터의 크기까지 숫자여야 합니다. |
| 구조 | 행렬 | 원본 구조는 적어도 벡터의 크기여야 합니다. 첫 번째 구성 요소는 대상 벡터의 크기까지 숫자여야 합니다. |
| 구조 | 구조 | 대상 구조는 원본 구조보다 크지 않아야 합니다. 모든 원본 및 대상 구성 요소 사이에 유효한 캐스트가 있어야 합니다. |
매개 변수 값 한정자
매개 변수 한정자 주석은 매개 변수의 데이터를 제대로 해석할 수 있도록 매개 변수에 추가 정보를 추가합니다. 예를 들어 정규화된 데이터로 벡터를 표현해야 하거나 길이를 인치 단위로 측정할 수 있습니다. 매개 변수 값 한정자 주석은 데이터가 효과 매개 변수로 전송될 때 호스트 애플리케이션이 값을 올바르게 변환할 수 있도록 이 추가 정보를 표현합니다.
매개 변수 한정자는 다음과 같습니다.
| 매개 변수 값 한정자 주석 | 묘사 |
|---|---|
| sasNormalize | 벡터를 정규화할지 여부를 지정합니다. |
| SasUnits | 매개 변수의 측정 단위를 지정합니다. |
SasNormalize
SasNormalize 주석은 연결된 매개 변수가 할당될 때마다 정규화된 값이어야 임을 나타냅니다. 이 주석은 float2, float3 및 float4 매개 변수에만 영향을 줍니다.
string SasNormalize = "Value";
여기서 값은 True 또는 False입니다.
예제는 다음과 같습니다.
float3 UpNormal
<
bool SasNormalize = "True";
>;
SasUnits
효과 매개 변수 데이터는 다음 단위로 제공됩니다.
string SasUnits = "Value";
여기서 값은 다음 중 하나입니다.
| 측정 유형 | 값 | 묘사 |
|---|---|---|
| 단위 없음 | 빈 문자열 | 단위 없음 |
| 거리 | 밀리미터 | 밀리미터 |
| 센티미터 | 센티미터 | |
| m | 미터 | |
| 킬로미터 | 킬로미터 | |
| 각 | rad | 라디안 |
| 시간 | ms | 밀리초 |
| 초 | 초 | |
| 분 | 분 | |
| hr | 시간 | |
| 선형 속도 | 밀리미터/초 | 초당 밀리미터 |
| 센티미터/초 | 초당 센티미터 | |
| 미터/초 | 초당 미터 수 | |
| 미터/시간 | 시간당 미터 | |
| 킬로미터/시간 | 시간당 킬로미터 | |
| 선형 가속 | 밀리미터/초² | 밀리미터/제곱초 |
| cm/sec² | 제곱초당 센티미터 | |
| m/sec² | 초당 미터(제곱) | |
| m/시간² | 시간 제곱당 미터 | |
| km/hr² | 시간 제곱당 킬로미터 | |
| 각속도 | 라디안/초 | 초당 라디안 |
| 각가속도 | 라디안/초² (rad/sec²) | 라디안 매 제곱초 |
| 지역 | mm² | 제곱 밀리미터 |
| 제곱센티미터 | 제곱 센티미터 | |
| m² | 제곱미터 | |
| km² | 제곱 킬로미터 | |
| 음량 | 세제곱밀리미터 | 밀리미터 큐브 |
| 세제곱센티미터 | 센티미터 큐브 | |
| 세제곱미터 | 세제곱미터 | |
| 세제곱킬로미터 | 큐브된 킬로미터 |
관련 항목