다음을 통해 공유


포인트 반사 조명 효과

점 반사 조명 효과를 사용하여 반사 표면으로 보이는 이미지를 만듭니다. 이 효과는 이미지의 알파 채널을 높이 맵 및 배치하는 점 광원으로 사용하고 퐁 조명 모델의 반사 부분에 따라 반사 및 빛을 계산합니다.

출력 비트맵의 색은 밝은 색, 조명 위치 및 표면 기하 도형의 결과입니다. 반사 조명이 있는 각 픽셀에 대한 알파 채널 출력은 해당 픽셀에 대한 빨간색, 녹색 및 파란색 채널 출력의 최대값입니다.

이 효과에 대한 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) 구성 요소는 수식을 사용하여 계산됩니다.

표면의 높이(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

ID2D1Effect