Войти
Unreal EngineФорумПрограммирование

Кто-нибудь расковырял рендеринг в ue4? (2 стр)

Страницы: 1 2 3 Следующая »
#15
15:51, 1 сен. 2017

bormaley666,
Можно ссылочку на код DOOM3 ?


#16
15:57, 1 сен. 2017

Прикалываешься чтоли? Давным давно в открытом доступе в сети лежит.

#17
16:00, 1 сен. 2017

bormaley666,
Действительно...

Как-то не искал. :)

#18
16:13, 1 сен. 2017

bykabak
> Можно ссылочку на код DOOM3 ?
Vulkan Mod: https://github.com/DustinHLand/vkDOOM3 на всякий случай :)

#19
22:13, 1 сен. 2017

Пытался найти в уе как он генерит 3д меш для фотометрики, фиг.
А штука весьма забавная, я ее в ментале постоянно использую.

#20
3:56, 2 сен. 2017

bormaley666
> - сложный, трудночитаемый код
> Местами можно было бы сделать проще. Например в Doom3 очень простой и
> лаконичный код.
> - чрезмерное увлечение макросами
> - встроенная система мета-данных
Это привет 20 летней истории. достаточно посмотреть исходники UE 0.82 (возможно в те годы макросы были прорывом? и за 20 лет многие до сих пор не выпилили)

#21
12:32, 2 сен. 2017

bormaley666
> Например в Doom3 очень простой и лаконичный код
Да, давайте сравнивать игру с движком

#22
13:51, 2 сен. 2017

war_zes
> возможно в те годы макросы были прорывом?

В те годы не было template / boost

#23
19:29, 2 сен. 2017

war_zes
> Это привет 20 летней истории. достаточно посмотреть исходники UE 0.82 (возможно
> в те годы макросы были прорывом? и за 20 лет многие до сих пор не выпилили)

ты про DECLARE_CLASS и всё такое ?

#24
4:36, 3 сен. 2017

innuendo
> ты про DECLARE_CLASS и всё такое ?
ну и про это...

#25
4:42, 3 сен. 2017

CasDev
> В те годы не было template / boost
ну шаблоны уже были (в Unreal Tournament уже использовались - хотя и мало)

единственное что я думаю - были проблемы с наследованием? иначе для чего вот такие макросы:

#define DECLARE_BASE_CLASS( TClass, TSuperClass, TStaticFlags ) \
public: \
  /* Identification */ \
  enum {StaticClassFlags=TStaticFlags}; \
  private: static UClass PrivateStaticClass; public: \
  typedef TSuperClass Super;\
  typedef TClass ThisClass;\
  static UClass* StaticClass() \
    { return &PrivateStaticClass; } \
  void* operator new( size_t Size, UObject* Outer=(UObject*)GetTransientPackage(), FName Name=NAME_None, DWORD SetFlags=0 ) \
    { return StaticAllocateObject( StaticClass(), Outer, Name, SetFlags ); } \
  void* operator new( size_t Size, EInternal* Mem ) \
    { return (void*)Mem; } \

// Declare a concrete class.
#define DECLARE_CLASS( TClass, TSuperClass, TStaticFlags ) \
  DECLARE_BASE_CLASS( TClass, TSuperClass, TStaticFlags ) \
  friend FArchive &operator<<( FArchive& Ar, TClass*& Res ) \
    { return Ar << *(UObject**)&Res; } \
  virtual ~TClass() \
    { ConditionalDestroy(); } \
  static void InternalConstructor( void* X ) \
    { new( (EInternal*)X )TClass(); } \

// Declare an abstract class.
#define DECLARE_ABSTRACT_CLASS( TClass, TSuperClass, TStaticFlags ) \
  DECLARE_BASE_CLASS( TClass, TSuperClass, TStaticFlags | CLASS_Abstract ) \
  friend FArchive &operator<<( FArchive& Ar, TClass*& Res ) \
    { return Ar << *(UObject**)&Res; } \
  virtual ~TClass() \
    { ConditionalDestroy(); } \


#define IMPLEMENT_CLASS(TClass) \
    UClass TClass::PrivateStaticClass \
    ( \
      EC_NativeConstructor, \
      sizeof(TClass), \
      TClass::StaticClassFlags, \
      TClass::Super::StaticClass(), \
      TClass::WithinClass::StaticClass(), \
      FGuid(TClass::GUID1,TClass::GUID2,TClass::GUID3,TClass::GUID4), \
      TEXT(#TClass)+1, \
      GPackage, \
      StaticConfigName(), \
      RF_Public | RF_Standalone | RF_Transient | RF_Native, \
      (void(*)(void*))TClass::InternalConstructor, \
      (void(UObject::*)())TClass::StaticConstructor \
    ); \
    extern "C" DLL_EXPORT UClass* autoclass##TClass;\
    DLL_EXPORT UClass* autoclass##TClass = TClass::StaticClass();

#26
8:44, 3 сен. 2017

war_zes
> единственное что я думаю - были проблемы с наследованием? иначе для чего вот
> такие макросы:

с каким наследованием ? это метасистема для сериализации.. посмотри MFC

#27
10:27, 3 сен. 2017

Мне эпиковский код всегда было очень тяжело читать, независимо от версии движка. Кармаковский или Крайтековский без проблем, легко читается, а в унреале ничего невозможно понять. Точнее там идёт чтение только на уровне локальных функций, а всю картину охватить никак не получается.

#28
12:01, 6 сен. 2017

Как они рисуют Terrain такой огромный и так быстро и текстурируют ?  Как это устроенно у них ?

#29
12:51, 6 сен. 2017

bykabak
>Как они рисуют Terrain такой огромный и так быстро и текстурируют ?
в чём собственно проблема?

на самом деле реализация у них не фонтан, cpu-runtime тесселяция/сборка лодов мешей
если сравнивать с ведьмаком - у ведьмака полноценный gpu geo-clipmapping

>Как это устроенно у них ?
Unreal Engine\Engine\Source\Runtime\Landscape\Private\Landscape.cpp
Unreal Engine\Engine\Source\Runtime\Landscape\Private\LandscapeRender.cpp

Страницы: 1 2 3 Следующая »
Unreal EngineФорумПрограммирование

Тема в архиве.