Tiny3DTop

My humble attempt to create a minimal 3D rendering engine. It is only targeting Windows and D3D11 (atm).

Note This is a work in progress.

UsageTop

#include "Tiny3DAll.h"

using namespace Tiny3D;

int APIENTRY wWinMain(_In_    HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_     LPWSTR    lpCmdLine,
                     _In_     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
    UNREFERENCED_PARAMETER(nCmdShow);

    Application app(hInstance);
    // Set parameters before Application::Initialize();
    app.parameters_.vSync = true;
    if (SUCCEEDED(app.Initialize()))
    {
        std::shared_ptr<Scene> scene = std::make_shared<Scene>();
        std::shared_ptr<Camera> camera = std::make_shared<Camera>();
        camera->position_ = Math::Vector3(0, 0, -10);

        scene->Add(camera);

        scene->SetCamera(camera);
        app.SetScene(scene);

        // Calls: (1) Application::Starting(), (2) Message pump, (3) Application::Ending()
        app.Run();

        return EXIT_SUCCESS;
    }
    return EXIT_FAILURE;
}

RequirementsTop

Third partyTop

BuildingTop

  1. Build pugixml as static library and copy the .lib file to ./lib/x64/Debug|Release.
  2. Assimp: 1. Download Assimp and put it in the ThirdParty/assimp folder. 2. Build Assimp as static library and copy zlibstatic(d).lib and assimp-vc140-mt.lib to ./lib/x64/Debug|Release.
  3. Build soloud as static library. Compile it with WITH_WINMM when you are on Windows 7 (for Windows 8 and later you could use WITH_XAUDIO2). Then copy the created soloud.lib file to ./lib/x64/Debug|Release
  4. Download stb and put it in the ThirdParty/stb folder.
  5. Open Tiny3D.sln and compile it from the IDE.

TodoTop

  1. Working transparency
  2. Shadow mapping

LimitsTop

This is not a Game engine, therefore it lacks:

InputTop

See MyApp::KeyUpEvent()Top

See Shortcuts::AddDefault()Top

GamepadTop

Only XInput is supported. If you have an old DirectInput Gamepad you can use x360ce to translate DirectInput into XInput.

Inspirations/CreditsTop

OuchTop

I thought this would be easier. We have already over 100 source files (okay, maybe 60 without header files). Is this all really needed to get an API to do what it’s supposed to do?

ScreenshotsTop

Not much is workingTop

Textures still not workingTop

That’s a problem of the house model, it is rendered correctlyTop

At least some textures are working nowTop

Fixed textures, added transparencyTop

It was just an unsupported PNG file format.

Sounds with soloudTop

This library should have the name socool :D.

Currently it has:

Sounds for the 3D sound source should be mono to work correctly.

LinksTop