Jump to content
  • Advertisement

AireSpringfield

Member
  • Content count

    7
  • Joined

  • Last visited

Community Reputation

0 Neutral

About AireSpringfield

  • Rank
    Newbie

Personal Information

  • Interests
    Art
    Design
    Programming

Social

  • Github
    https://github.com/AireSpringfield
  1. AireSpringfield

    Parameters of physically based Material in UE4?

    Thanks so much!By the way, Where can I find some references, like the corresponding hlsl codes?
  2. Hi, I'm currently studying physically based shading in UE4 described in Real Shading in Unreal Engine 4. In the notes, the Material has 4 basic properties: BaseColor, Metallic, Roughness and Cavity. Here is their BRDF model in use: The use of roughness is clearly clarified, and I guess BaseColor is referred as \(c_{diff}\)c_diff in the diffuse component. Then anyone knows how Metallic and Cavity is implemented in UE4? Exact fragments in the source code of the engine would be the best. Thanks a lot!!
  3. So calling XMVector3TransformNormal() doesn't mean to transform a "surface normal" by multiplying inverse transpose of M, "normal" is for ignoring translation, is it?
  4. Hi, When reading Frank Luna's book Introduction to 3D Game Programming with DX11, chapter 10 stenciling, the author made a demo to achieve mirror reflection effect. He made tranformation matrix and transform directional lights as following: // Build reflection matrix to reflect the skull. XMVECTOR mirrorPlane = XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f); // xy plane XMMATRIX R = XMMatrixReflect(mirrorPlane); XMMATRIX world = XMLoadFloat4x4(&mSkullWorld) * R; …/ / Reflect the light source as well. // Cache the old light directions, and reflect the light directions. XMFLOAT3 oldLightDirections[3]; for(int i = 0; i < 3; ++i) { oldLightDirections = mDirLights.Direction; XMVECTOR lightDir = XMLoadFloat3(&mDirLights.Direction); XMVECTOR reflectedLightDir = XMVector3TransformNormal(lightDir, R); XMStoreFloat3(&mDirLights.Direction, reflectedLightDir); } But I think the direction of a light source is no more than a vector, not a normal. Why did the author use XMVector3TransformNormal to flip the lights? Thanks!
  5. AireSpringfield

    Member function as callback

    OK, I'd say that I prefer the author's method... Thanks for your help!
  6. Hi, I started reading Introduction to 3D Game Programming with Direct3D 11.0 and have a little question about callback function. In author's example code d3dApp.cpp, he managed to assign a member function to WNDCLASS::lpfnWndProc namespace { // This is just used to forward Windows messages from a global window // procedure to our member function window procedure because we cannot // assign a member function to WNDCLASS::lpfnWndProc. D3DApp* gd3dApp = 0; } LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { // Forward hwnd on because we can get messages (e.g., WM_CREATE) // before CreateWindow returns, and thus before mhMainWnd is valid. return gd3dApp->MsgProc(hwnd, msg, wParam, lParam); } in constructor D3DApp::D3DApp() gd3dApp = this; and in bool D3DApp::InitMainWindow() wc.lpfnWndProc = MainWndProc; Notice that D3DApp::MsgProc is a virtual function. As far as I'm concerned, I would find it convenient to declare MsgProc member function as static. However, a static member can't be virtual. Is there any solution so that I can overcome the contradiction except author's method?
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!