这个原理实际上就是阴影图,像素级自然最精确了。
废话不多说,上源码
UGameViewportClient * clientView = GWorld->GetGameViewport();
FViewport* InViewport = clientView->Viewport;
float X = InViewport->GetMouseX();
float Y = InViewport->GetMouseY();
HHitProxy* HitProxy = InViewport->GetHitProxy(X, Y);
if (nullptr == HitProxy)
{
return nullptr;
}
if ( HitProxy->IsA(HActor::StaticGetType()))
{
HActor* ActorHit = static_cast<HActor*>(HitProxy);
if (ActorHit->Actor != NULL)
{
AActor* theActor = ActorHit->Actor;
return theActor;
}
}
return nullptr;
分割线:
-------------------------------------
其实,这项技术在dx11中就有了,cpu和gpu互传
在
typedef struct D3D11_TEXTURE2D_DESC
{
...
D3D11_USAGE Usage里面
....
}
看来要想玩好ue4,必须底层要搞好,DX和pbr在试用期过后还得搞搞,才能真正发挥ue4的强大
本文深入探讨了UE4中阴影图技术的实现原理,通过像素级精度达到高度真实感。提供了源码片段展示如何在UE4中获取鼠标点击位置下的Actor,以及与DX11中CPU和GPU数据交互的技术细节。
1547

被折叠的 条评论
为什么被折叠?



