Direct2D Effect 응용
2023. 7. 25. 22:48ㆍ개인공부/Direct2D
BloomEffect
최근에 그래픽스 엔진쪽에서 추가하면 좋을 기능등에서 고민을 많이하고 있었는데 수업시간에 교수님께서 가우시안 블러를 응용하는 방법들에 대해서 말씀해 주셨는데 정말 많은 도움이 되었다. 가우시안 블러만으로는 무언가를 표현하기에는 예쁘지 않았는데 배운것을 응용했는데 예쁘게 나와서 만족했다.
아래는 구현 코드인데 아직까지는 비트맵 전체를 가우시안 블러를 적용해서 하고 있는데 교수님이 설명하신 방법은 명도에서 따라서 적용하면 더 예쁘다! 였다. 그래서 명도에 대해서 공부도 해야한다.
일단은 RGB 값으로 V(명도)를 구할 수 있으므로 D2D Effect 중에서 특정 명도값 아래는 모두 투명처리를 하고 남아있는 곳만 가우시안 블러를 처리해서 원본과 블랜딩하면 될꺼같은데 잘 찾아봐야겠다.
ㅁ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
ID2D1Bitmap* D2DEffect::BloomEffect(ID2D1Bitmap* _orgin)
{
ID2D1Bitmap* resultBitmap = nullptr;
ID2D1Image* image = nullptr;
// 원본 이미지 투명도 25퍼 적용
m_opacity->SetInput(0, _orgin);
m_opacity->SetValue(D2D1_OPACITY_PROP_OPACITY, 0.25f);
// 가우시안 블러를 적용한 비트맵
m_gaussianBlur->SetInput(0, _orgin);
m_gaussianBlur->SetValue(D2D1_GAUSSIANBLUR_PROP_STANDARD_DEVIATION, 3.f);
m_compositeEffect->SetValue(D2D1_COMPOSITE_PROP_MODE, D2D1_COMPOSITE_MODE_PLUS);;
m_compositeEffect->SetInputEffect(0, m_gaussianBlur);
m_compositeEffect->SetInputEffect(1, m_opacity);
m_compositeEffect->GetOutput(&image);
D2D1_SIZE_U size = { _orgin->GetSize().width, _orgin->GetSize().height };
resultBitmap = ConvertImageToBitmap(&image, size);
return resultBitmap;
}
|
cs |
Planar reflection
구현하고 싶은 다음 효과로는 평면 반사인데 음 이건좀 어려워 보인다? 다양한 효과들을 혼합해야하고 물에 반사하는 것처럼 보이기 위해서는 더 공부가 필요해보인다.
'개인공부 > Direct2D' 카테고리의 다른 글
RGB Transition (0) | 2023.07.28 |
---|---|
D2D 이펙트 공부 (0) | 2023.07.26 |
스타크래프트 기능 구현 3 (0) | 2023.07.16 |
스타크래프트 기능 구현 2 (0) | 2023.07.14 |
충돌 연산 최적화 (0) | 2023.07.12 |