포인트 반사 조명 효과
점 반사 조명 효과를 사용하여 반사 표면으로 보이는 이미지를 만듭니다. 이 효과는 이미지의 알파 채널을 높이 맵 및 배치하는 점 광원으로 사용하고 퐁 조명 모델의 반사 부분에 따라 반사 및 빛을 계산합니다.
출력 비트맵의 색은 밝은 색, 조명 위치 및 표면 기하 도형의 결과입니다. 반사 조명이 있는 각 픽셀에 대한 알파 채널 출력은 해당 픽셀에 대한 빨간색, 녹색 및 파란색 채널 출력의 최대값입니다.
이 효과에 대한 CLSID는 CLSID_D2D1PointSpecular.
예제 이미지
이 예제에서는 점 반사 조명 효과의 입력 및 출력 이미지를 보여 줍니다.
반사 조명은 퐁 조명 모델에 따라 특정 방향으로 반사되는 빛을 나타냅니다.
효과는 다음 수식을 사용하여 최종 출력 픽셀 값을 계산합니다.
where
- k? = 반사 조명 상수입니다.
= x 및 y의 함수인 surface 일반 단위 벡터입니다. 계산은 높이 맵 및 일반 벡터를 참조하세요.
= 눈 단위 벡터와 광원 단위 벡터 사이의 "중간" 단위 벡터입니다. 계산은 점 광원 을 참조하세요.
Lr, Lg, Lb = RGB 구성 요소의 밝은 색입니다.
반사 조명 상수를 SpecularConstant 속성으로 설정하고 밝은 색을 Color 속성으로 설정합니다.
점 광원
점 광원은 여기에 있는 이미지와 같은 모든 방향으로 빛을 내보낸다.
LightPosition 속성을 사용하여 광원의 위치를 설정합니다. 이 효과는 다음 수식을 사용하여 점 광원에 대한 광원 L 벡터를 계산합니다.
여기서 Light?, Lighty 및 Lightz 는 입력 라이트 위치입니다. 이 효과는 여기에서 수식을 사용하여 퐁 조명 모델에 정의된 대로 를 계산합니다. 조명 모델은 눈 벡터 가 (0,0,1)에 있다고 가정합니다.
L과 H는 모두 단위 길이 벡터로 정규화됩니다.
높이 맵 및 일반 벡터
효과는 알파 채널을 기반으로 입력 이미지에 대한 높이 맵을 생성합니다.
높이(Z) 구성 요소는 수식을 사용하여 계산됩니다.
이 효과는 Sobel 그라데이션을 사용하는 입력 비트맵에 대해 인 표면 보통을 계산합니다.
반사 조명 상수 및 지수
반사 광원은 이미지 높이 맵의 표면에서 반사되는 빛을 나타냅니다. 비트맵에서 반사 반사의 양을 결정하는 SpecularExponent 속성을 지정합니다.
큰 지수는 더 빛나는 개체를 나타내고 더 집중된 모양으로 빛을 반사합니다.
SpecularConstant 속성 K? 는 반사된 광원의 양을 들어오는 광원의 비율로 정의합니다.
효과 속성
표시 이름 및 인덱스 열거형 | 설명 |
---|---|
LightPosition D2D1_POINTSPECULAR_PROP_LIGHT_POSITION |
점 광원의 광원 위치입니다. 속성은 (x, y, z)로 정의된 D2D1_VECTOR_3F. 단위는 디바이스 독립적 픽셀(DIP)이며 값은 단위가 없고 바인딩되지 않습니다. 형식이 D2D1_VECTOR_3F. 기본값은 {0.0f, 0.0f, 0.0f}입니다. |
SpecularExponent D2D1_POINTSPECULAR_PROP_SPECULAR_EXPONENT |
퐁 조명 방정식의 반사 용어에 대한 지수입니다. 더 큰 값은 반사 표면에 해당합니다. 이 값은 단위가 없으며 1.0에서 128 사이여야 합니다. FLOAT 형식입니다. 기본값은 1.0f입니다. |
SpecularConstant D2D1_POINTSPECULAR_PROP_SPECULAR_CONSTANT |
들어오는 광원에 대한 반사 반사의 비율입니다. 값은 단위가 없으며 0에서 10,000 사이여야 합니다. FLOAT 형식입니다. 기본값은 1.0f입니다. |
SurfaceScale D2D1_POINTSPECULAR_PROP_SURFACE_SCALE |
높이 맵을 생성하기 위한 Z 방향의 배율 인수입니다. 값은 단위가 없으며 0에서 10,000 사이여야 합니다. FLOAT 형식입니다. 기본값은 1.0f입니다. |
색상 D2D1_POINTSPECULAR_PROP_COLOR |
들어오는 조명의 색입니다. 이 속성은 D2D1_VECTOR_3F(R, G, B)로 노출되며 LR, LG, LB를 계산하는 데 사용됩니다. 형식이 D2D1_VECTOR_3F. 기본값은 {1.0f, 1.0f, 1.0f}입니다. |
KernelUnitLength D2D1_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
X 및 Y 방향으로 표면 보통을 생성하는 데 사용되는 Sobel 커널의 요소 크기입니다. 이 속성은 Sobel 그라데이션의 dx 및 dy 값에 매핑됩니다. 이 속성은 D2D1_VECTOR_2F(커널 단위 길이 X, 커널 단위 길이 Y)이며 (DIP/커널 단위)에 정의되어 있습니다. 이 효과는 쌍선형 보간을 사용하여 커널 요소의 크기와 일치하도록 비트맵의 크기를 조정합니다. 형식이 D2D1_VECTOR_2F. 기본값은 {1.0f, 1.0f}입니다. |
Scalemode D2D1_POINTSPECULAR_PROP_SCALE_MODE |
효과가 이미지를 해당 커널 단위 길이로 스케일링하는 데 사용하는 보간 모드입니다. 품질과 속도의 범위는 여섯 배율 모드가 있습니다. 자세한 내용은 크기 조정 모드 를 참조하세요. 형식이 D2D1_POINTSPECULAR_SCALE_MODE. 기본값은 D2D1_POINTSPECULAR_SCALE_MODE_LINEAR. |
크기 조정 모드
열거형 | 설명 |
---|---|
D2D1_POINTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | 가장 가까운 단일 지점을 샘플하고 사용합니다. 이 모드는 처리 시간을 줄이지만 가장 낮은 품질의 이미지를 출력합니다. |
D2D1_POINTSPECULAR_SCALE_MODE_LINEAR | 4포인트 샘플 및 선형 보간을 사용합니다. 이 모드는 가장 가까운 인접보다 더 높은 품질의 이미지를 출력합니다. |
D2D1_POINTSPECULAR_SCALE_MODE_CUBIC | 보간을 위해 16 샘플 입방 커널을 사용합니다. 이 모드는 가장 많은 처리 시간을 사용하지만 더 높은 품질의 이미지를 출력합니다. |
D2D1_POINTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | 좋은 에지 앤티앨리어싱을 위해 단일 픽셀 내에 4개의 선형 샘플을 사용합니다. 이 모드는 픽셀이 적은 이미지에서 소량으로 축소하는 데 적합합니다. |
D2D1_POINTSPECULAR_SCALE_MODE_ANISOTROPIC | 이방성 필터링을 사용하여 비트맵의 변형된 모양에 따라 패턴을 샘플링합니다. |
D2D1_POINTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | 변형 매트릭스에 다운스케일링이 관련된 경우 가변 크기의 고품질 입방형 커널을 사용하여 이미지의 미리 다운스케일을 수행합니다. 그런 다음 최종 출력에 입방 보간 모드를 사용합니다. |
참고
모드를 선택하지 않으면 효과가 기본적으로 D2D1_POINTSPECULAR_SCALE_MODE_LINEAR.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
지원되는 최소 서버 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
헤더 | d2d1effects.h |
라이브러리 | d2d1.lib, dxguid.lib |