Что использует unity opengl или directx
Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 5 лет назад .
Хочу написать свою игру в жанре MMORPG (скорее всего 3d). Писать на С/С++ и Assembler. Подскажите что лучше для этого использовать - DirectX или OpenGL?
мой тебе совет : забудь эту бредовую идею. максимум ММО (многопользовательская) : шашки шахматы крестики-нолики сколько угодно, а вот РПГ не добавляй. это не посилам даже многим командам инди разработчиков не говоря уже про одного человека.
Рекомендую попробовать и то, и другое. Но по следующему плану. Выберите себе простую задачу (например, нарисовать объемного человечка по старой считалке - "палка, палка, огуречик") - и попробуйте решить ее самостоятельно (без привлечение форумов, только пользуясь поисковиком) за неделю на каждом языке. Через две недели ответ будет понятен.
OpenGL. По крайней мере, так портирование игры на другие платформы будет проще. С другой стороны, никто не мешает сделать в игре несколько модулей, каждый из которых будет использовать какой-то определенный способ отображения. Так, например, сделано в Unreal Tournament. Там три возможных интерфейса: DirectX, OpenGL и Glide. Сейчас последний уже вряд ли актуален.
тут уже несколько раз сказали, и присоединяюсь:) в одиночку написать серьезную ММОРПГ, особенно перечисленными вами средствами, практически нереально. Во-первых С++/ассемблер - довольно сердитые средства разработки - на них игры пишутся относительно долго (то же касается ДХ - люди тратят годы жизни, чтобы профессионально писать на нем. С ОГЛ ситуация чуть получше). И, если у вас опыт С++ меньше 2-3 лет, багов понаделаете столько, что половину времени будете их чинить.
Был интересный опыт разработки одной нестандартной ММОРПГ(?): minecraft. Насколько знаю, ядро игры было написано одним человеком в короткие сроки на java. Со схематичной графикой. Т.е., в принципе соорудить что-то можно.. Но следует правильно подбирать инструменты, особенно когда вы работаете самостоятельно.
Ну, во всяком случае это пример проекта с достаточно сложным функционалом и каким-то мультиплеером, написанного умеренными усилиями в умеренные сроки:)
Unity has ability to use DirectX 11 and OpenGL Core graphics APIs, with all the goodies that you expect from them: compute shaders, tessellation shaders, shader model 5.0 and so on.
Примеры
The following screenshots show examples of what becomes possible with DirectX 11 / OpenGL Core.
Объемный взрыв на этих кадрах отрендерен с использованием raymarching, что становится возможным с shader model 5.0. К тому же, поскольку генерируются значения глубины(depth), мы можем использовать графические эффекты, которые работают с глубиной (depth),например, depth of field или motion blur. The hair in this shot is implemented via tessellation & geometry shaders to dynamically generate and animate individual strings of hair. Shading is based on a model proposed by Kajiya-Kai that enables a more believable diffuse and specular behaviour. Как и в примере с волосами, мех на тапочках также основан на генерации шерстинок, которые “растут” из незамысловатого меша (base mesh) тапочек. Эффект размытия на этом изображении (также известный как Bokeh ) основан на разбросе (splatting) текстуры поверх очень ярких пикселей. Такой подход позволяет достичь крайне правдоподобного результата, особенно, когда используется в связке с технологией HDR rendering. Exaggerated lens blur similar to the screenshot above. This is a possible result using the new Depth of Field effect
Unity supports DirectX 11 (DX11) and OpenGL Core graphics APIs. This page details how to use them.
Examples
The following screenshots show examples of what you can achieve with DirectX 11 and OpenGL Core.
The volumetric explosion in the above shots is rendered using raymarching, which becomes plausible with Shader Model 5.0. Moreover, as it generates and updates depth values, it becomes fully compatible with depth-based Image Effects such as Depth of Field or Motion Blur.
The hair in the above shot is implemented via tessellation and geometry Shaders to dynamically generate and animate individual strands of hair. Shading is based on a model proposed by Kajiya-Kai that enables a more believable diffuse and specular behaviour.
Similar to the hair technique shown in the previous image, the fur on this pair of slippers is also based on generating geometry emitted from a simple base slippers Mesh.
The blur effect in the image above (known as Bokeh) is based on stamping a Texture on top of very bright pixels. This creates very believable camera lens blurs, especially when used in conjunction with HDR rendering.
This image shows an exaggerated lens blur. This is a possible result of using the new Depth of Field effect.
Copyright © 2017 Unity Technologies. Publication: 5.6-001N. Built: 2017-07-12.
Unity supports DirectX 11 (DX11) and OpenGL Core graphics APIs. This page details how to use them.
Image Effects that can take advantage of DX11 / OpenGL Core
- Depth of Field effect (optimized Bokeh texture splatting)
- эффект Noise and Grain (образцы шума высокого качества)
- эффект Motion Blur (фильтр восстановления высокого качества)
Enabling OpenGL Core
OpenGL Core is enabled by default on Mac and Linux. Your games and the Unity Editor use OpenGL Core on these platforms.
To enable OpenGL Core on Windows and make it the default, go to Edit > Project Settings > Player to open the Player Settings. Navigate to Other Settings and un-tick Auto Graphics API for Windows. In the panel that appears, click the plus (+) button and choose OpenGLCore from the list to add it.
Adding OpenGLCore to the Graphics APIs for Windows list
OpenGL Core has the following minimum requirements:
- Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2 to 4.1)
- Windows with NVIDIA since 2006 (GeForce 8), AMD since 2006 (Radeon HD 2000), Intel since 2012 (HD 4000 / IvyBridge) (OpenGL 3.2 to OpenGL 4.5)
- Linux (OpenGL 3.2 to OpenGL 4.5)
Включение DirectX 11
This option is on by default (i.e. on Windows, your games and editor will try to use DX11, and fall back to DX9 when not available). To enable DirectX 11 for your game builds and the editor, set “Use DX11” option in Player Settings.
NOTE: DX11 requires Windows Vista or later and at least a DX10-level GPU (preferably DX11-level). Unity editor window title has “” at the end when it is actually running in DX11 mode.
Examples
The following screenshots show examples of what you can achieve with DirectX 11 and OpenGL Core.
The volumetric explosion in the above shots is rendered using raymarching, which becomes plausible with Shader Model 5.0. Moreover, as it generates and updates depth values, it becomes fully compatible with depth-based Image Effects such as Depth of Field or Motion Blur.
The hair in the above shot is implemented via tessellation and geometry Shaders to dynamically generate and animate individual strands of hair. Shading is based on a model proposed by Kajiya-Kai that enables a more believable diffuse and specular behaviour.
Similar to the hair technique shown in the previous image, the fur on this pair of slippers is also based on generating geometry emitted from a simple base slippers Mesh.
The blur effect in the image above (known as Bokeh) is based on stamping a Texture on top of very bright pixels. This creates very believable camera lens blurs, especially when used in conjunction with HDR rendering.
This image shows an exaggerated lens blur. This is a possible result of using the new Depth of Field effect.
Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост .
Закрыто 4 года назад .
Я только начинающий в 3D играх, моя любимая платформа - Android. Я отправил вопрос на другом форуме о том, что использовать: OpenGL или Unity3d? Все они подчеркивали Unity3D и использовали его встроенные функции и инструменты, которые я должен был бы написать сам, если бы использовал OpenGL. Но потом кто-то говорит, что большинство сложных игр требуют пользовательских движков. Зачем мне использовать движок, такой как Unity3D, а не OpenGL?
Два слова: мгновенное удовлетворение. Вы можете сделать что-то «полезное» с помощью единства, не зная многого, в то время как для запуска приложения OpenGL требуется довольно много строк кода и понимание широкого спектра концепций.
Возможно, мы можем просто объяснить это в этой теме, и все вопросы «какие технологии мне следует использовать» исчезнут навсегда. также я хочу единорога
«Для большинства сложных игр требуются собственные движки» - на самом деле, удивительно большое количество очень успешных игр ААА построено на стандартных движках, таких как движок Unreal .
Кроме того, новичок не сможет сделать игру настолько сложной, что в любом случае ему понадобится собственный движок.
Я думаю, что вы уже ответили на этот вопрос сами. Вы сказали: «Я всего лишь новичок в 3D играх» . Далее вы сказали: «. Unity3D и использование его встроенных функций и инструментов, которые я должен был бы написать сам, если бы использовал OpenGL» .
По сути, это означает, что если вы используете только OpenGL, вы будете писать игровой движок, а затем, возможно, годы спустя, писать свою игру. Если вы хотите сосредоточиться на игре, используйте имеющиеся у вас ресурсы, чтобы максимально приблизить вас к этой цели. Использование игрового движка - лучший способ сосредоточить свои усилия на создании игры, а не писать все, что требуется для создания игры.
так что OpenGL предназначен только для графики, а unity3d - это полноценный фреймворк, в котором есть требования к графике и физике для моей игры?
@AmanGrover: также осознайте, что с GL «просто для графики» действительно «просто для отправки команд в GPU». Программисту по-прежнему предстоит выполнить всю тяжелую графическую работу, в то время как в Unity есть все важные графические функции и алгоритмы, которые включены и готовы к использованию.
Не пишите Двигатели, пишите игры. Это то, что мне сказали подойти. Что я имею в виду, когда кто-то создает игровой движок, пока вы создаете настоящую игру. Так что в этом я не согласен с байтом.
Потому что новички по определению не знают, что делают .
OpenGL имеет огромную кривую обучения. Конечно, вы можете выполнить несколько команд glBegin, быть в восторге от размещения некоторых треугольников на экране, а затем уйти в глубокий конец с чем-то более сложным, что вы еще далеко не готовы взять на себя. Это не отличный способ учиться. Аналогия (слегка преувеличенная) может заключаться в изучении некоторой базовой физики в средней школе, а затем в ведении Большого адронного коллайдера. Это не погружение или плавание, это плавание или оставление большой радиоактивной дыры в земле.
Предполагается, что большинство людей спрашивают: «Я хочу сделать игру, что мне использовать?» Вопрос на самом деле действительно хотят создать игру (иначе они бы задали другой вопрос, конечно?). Таким образом, ответ адаптирован к этому вопросу, и использование уже существующего инструментария, фреймворка или движка - один из способов помочь им достичь этой цели. не отвлекаясь на агонию из-за того, что вызовы UBO или glUniform предпочтительнее для обновления одной матрицы.
Все дело в том, чтобы делать шаг за шагом, облегчать процесс обучения и давать вам что-то полезное в конце. Попытка научиться создавать игру и правильно использовать зрелый и мощный 3D API в то же время , вероятно, слишком много для новичка. Это похоже на эффект Даннинга-Крюгера за вычетом негативных коннотаций. Вы не знаете, чего не знаете, поэтому у вас нет реалистичной картины того, что вы собираетесь делать.
С другой стороны, если ваша цель - изучить OpenGL, то на самом деле вы не хотите создавать игру! Вы хотите изучать OpenGL, и делать это в контексте создания игры может быть увлекательным способом обучения, но создание игры - это средство для достижения цели, а не самоцель (и, конечно, не единственный способ изучения OpenGL). ). Вы, вероятно, никогда не выпустите его, и вы почти наверняка оглянетесь на него через несколько лет и будете ужасно смущены некоторыми глупостями, которые вы сделали.
Это действительно зависит от того, что вы хотите получить от этого проекта. Если ваша главная цель - сфокусироваться на игровом дизайне, то вам, вероятно, лучше с предварительно встроенным движком, потому что это поможет вам быстрее приступить к созданию игры. Если ваша цель состоит в том, чтобы узнать о программной части создания игр (особенно если вы пытаетесь подготовиться к работе в отрасли), то вы, вероятно, найдете работу с OpenGL более ценным опытом. Имейте в виду, что ни одно из предыдущих утверждений не соответствует действительности в 100% случаев.
Я категорически не согласен с тем, что работа с «голым» OpenGL будет более ценной для тех, кто проникнет в игровую индустрию. Unity является отличным примером современного, относительно зрелого игрового движка; Понимание функциональности, которую он предоставляет (с целью изучения того, как вы можете предоставить аналогичную функциональность самостоятельно), является отличным способом понимания самого процесса разработки игры, тогда как OpenGL далеко не является специфичным для игры в каком-либо значимом смысле.
Это просто показывает, как на самом деле нет правил об этих вещах, просто мнения. Все зависит от того, что вам нужно / хотите.
@ AmanGrover - тогда не создавайте игру! Вам будет легче учить одну вещь за один раз. Сделать симулятор солнечной системы. Узнайте, как рисовать базовые примитивы, научитесь переводить и вращать их, помещайте планеты в VBO, чтобы рисовать их быстрее, используйте некоторые шейдеры, чтобы создавать на них анимированные облака, и вы хорошо разбираетесь в основах.
@KamikazeSoctsman Опять не согласен здесь. Я не говорю, что OGL бесполезен - это далеко не так! - но в последнее десятилетие я использовал свои знания OpenGL лишь несколько раз в коротких схватках и началах. Напротив, поскольку игровые графические движки, как правило, очень чувствительны к производительности, по моему опыту, они являются одним из наименее распространенных мест для начинающего программиста. Вы должны знать трехмерную математику, и вы должны понимать принципы рендеринга, но это совсем не то же самое, что изучение OGL.
Разница проста. Unity - это коляска с четырьмя круглыми колесами, которая поможет вам добраться. OpenGL - это опилки, которые вы можете создать в магазине и использовать для изготовления улучшенной и более современной каретки и колес. То есть, если вы потратите много часов своего времени на то, чтобы узнать, что люди делали раньше, чем вы.
Ваша цель как новичка должна состоять в том, чтобы сначала изучить существующие вагоны и их конструкции. Нет смысла выбрасывать все в окно и начинать с нуля. Сначала изучите то, что уже существует, и получите полное знание об этом. Если вы этого не сделаете, как вы узнаете об его ограничениях и если вы не знаете ограничений, как вы могли бы их преодолеть? Какой смысл делать что-то посредственное, бесполезное и игнорировать все живые инструменты, которые уже доступны?
imho, шаги начинающего разработчика игр:
- Освойте современный фреймворк / движок и получите его глубокое понимание (это также поможет вам узнать о различных аспектах игрового дизайна, графики и OpenGL - это еще не все).
- Сделайте с ним небольшую игру и узнайте больше в процессе.
- Органично сталкиваюсь с препятствиями и ограничениями в двигателе.
- Узнайте больше о предмете.
- Работайте над улучшением тех областей, которые, по вашему мнению, нуждаются в улучшении.
Самостоятельная работа над созданием чего-то, что уже сделано, не сделает вас ценным разработчиком для кого-либо, потому что вы не будете продуктивным в истине или хорошим учеником в этом отношении, вы просто скопируете существующие фрагменты кода и, возможно, научитесь читать и понимать их. Как говорится в старой поговорке о покемонах: «Это не очень эффективно . ».
Хуже всего то, что с таким подходом нелегко идти в ногу с тем, что в нем нет удовлетворения, поэтому вы работаете с необузданной силой воли, которая, как было научно доказано, является ограниченным ресурсом для людей. Вам нужно делать что-то, что обеспечивает ежедневное удовлетворение, иначе вы, вероятно, не сможете его поддерживать.
Итак, подведем итоги. Подчеркнем Engine, потому что вы можете сделать что-то с помощью Engine, и у вас гораздо больше шансов на успех. Даже великие создатели игр полагались на чужую предыдущую работу, и такова природа прогресса. Вам нужно понять общую картину и уметь играть с кусочками Lego, предоставленными другими, прежде чем создавать свои собственные кусочки Lego.
Если предположить , что цель заключается в создании игры, парень , который говорил о пользовательских двигателях времени требуется не так. Во всяком случае, сложные игры требуют зрелого движка, который был разработан, реализован, оптимизирован, протестирован и поддерживается профессионалами, которые давно работают в отрасли, или такими, которые могут соответствовать их качеству (по крайней мере, для целей данной игры). , если это возможно.
Разработчики крупных игр создают собственные движки, но все еще активно используют их для будущих игр. Но имейте в виду, что их бюджеты, размеры команды и множество других факторов сильно отличаются от независимых разработчиков - для них может иметь гораздо больше смысла в создании собственного движка, даже если существующие технологически не дотягивают.
Конечно, все еще существует заблуждение, потому что многие функции не существуют в существующих механизмах вне коробки, что они вообще не могут быть реализованы в этом движке, но это обычно неточно.
Имейте в виду, что некоторые из самых инновационных современных игр, таких как Portal и Antichamber, были созданы с использованием существующих движков. Некоторые довольно сложные онлайн-игры, такие как Aion и TERA, были созданы с использованием существующих движков. Некоторые из самых визуально красивых игр, такие как Bioshock Infinite и Thief, были созданы с использованием существующих движков. И, конечно, некоторые не были. Но дело в том, что ничего, что я когда-либо видел, на самом деле не требовало специального движка
С другой стороны, если ваша цель - изучить концепции графического программирования, конечно, OpenGL - это путь. Но даже в этом случае имейте в виду, что знание нескольких существующих движков поможет вам понять, что вы делаете и к чему должны стремиться.
-1. Довольно большие утверждения об игровой индустрии. Большинство из них неточные. Я хотел бы посыпать твой пост примерно дюжиной citation needed с
Мой (ограниченный) опыт показал мне, что если есть что-то, что нельзя обобщать, это игровая индустрия. У каждой компании свой взгляд на вещи, даже у разных команд внутри компании могут быть совершенно разные политики во всем. В этом конкретном случае внутренние двигатели действительно генерируют затраты и имеют некоторые преимущества и недостатки. Сложно определить, является ли чистый результат экономией или расходами, и будет зависеть от проекта. Кроме того, бюджет, хотя и важен, не является единственным элементом, принимаемым во внимание при создании игр.
@PandaPajama Конечно, смотрите мои изменения. Я просто сказал, что для них это может иметь больше смысла для бизнеса в целом, что включает в себя фактор бюджета и все остальное, что помогает формировать их решение, подчеркивая, что это может вообще не быть техническим ограничением существующих двигателей.
Enabling DirectX 11
DirectX 11 is enabled by default on Windows. Your games and the Unity Editor use DX11, and fall back to DX9 when DX11 is not available.
To enable or disable DirectX 11 for your game builds and the Editor, go to Edit > Project Settings > Player to open the Player Settings. Navigate to Other Settings and un-tick Auto Graphics API for Windows. In the panel that appears, select Direct3D11 and click the minus (-) button to remove it, or click the plus (+) button and choose Direct3D11 from the list to add it.
Adding Direct3D11 to the Graphics APIs for Windows list
Once Direct3D11 is in the list, you can drag it up and down to define the priority in which the graphics API is selected - the Unity Editor and player defaults to the one at the top of the list, and uses each one after that as a fall back option, in order of how they are listed.
NOTE: DX11 requires Windows Vista or later, and at least a DX10-level GPU (preferably DX11-level). The Unity Editor window title has at the end when it is running in DX11 mode.
Enabling DirectX 11
DirectX 11 is enabled by default on Windows. Your games and the Unity Editor use DX11, and fall back to DX9 when DX11 is not available.
To enable or disable DirectX 11 for your game builds and the Editor, go to Edit > Project Settings > Player to open the Player Settings. Navigate to Other Settings and un-tick Auto Graphics API for Windows. In the panel that appears, select Direct3D11 and click the minus (-) button to remove it, or click the plus (+) button and choose Direct3D11 from the list to add it.
Adding Direct3D11 to the Graphics APIs for Windows list
Once Direct3D11 is in the list, you can drag it up and down to define the priority in which the graphics API is selected - the Unity Editor and player defaults to the one at the top of the list, and uses each one after that as a fall back option, in order of how they are listed.
NOTE: DX11 requires Windows Vista or later, and at least a DX10-level GPU (preferably DX11-level). The Unity Editor window title has at the end when it is running in DX11 mode.
Tessellation & Geometry Shaders
Surface Shaders have support for simple tessellation and displacement. See documentation on Surface Shader Tessellation for more information.
When manually writing Shader programs, you can use the full set of DX11 Shader model 5.0 features, including Geometry, Hull and Domain Shaders.
Enabling OpenGL Core
This option is on by default for Mac and Linux (i.e. on these platforms, your games and editor will use OpenGL Core.
You can enable OpenGL Core on windows and make it default, by going to the Player Settings, unchecking “Auto Graphics API for Windows”, and adding OpenGL Core to the list. You can then drag OpenGL Core to the top of the list if you would like it to be the default.
Enabling OpenGL Core for Windows
NOTE: OpenGL Core minimum requirements:*
- Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2 to 4.1)
- Windows with NVIDIA since 2006 (GeForce 8), AMD since 2006 (Radeon HD 2000), Intel since 2012 (HD 4000 / IvyBridge) (OpenGL 3.2 to OpenGL 4.5).
- Linux (OpenGL 3.2 to OpenGL 4.5).
Tessellation & Geometry Shaders
Surface Shaders have support for simple tessellation and displacement. See documentation on Surface Shader Tessellation for more information.
When manually writing Shader programs, you can use the full set of DX11 Shader model 5.0 features, including Geometry, Hull and Domain Shaders.
Surface Shaders and DX11
Some parts of the Surface Shader compilation pipeline do not understand DX11-specific HLSL syntax, so if you’re using HLSL features like StructuredBuffers, RWTextures and other non-DX9 syntax, you need to wrap it into a DX11-only preprocessor macro. See documentation on Platform-specific differences for more information.
Поверхностные шейдеры и DX11
На данном этапе некоторые операции при компиляции поверхностных шейдеров не “понимают” специфичного синтаксиса DX11 HLSL, а значит при использовании таких возможностей HLSL как структурированные буферы (StructuredBuffers), RWTextures и прочий не DX9 синтаксис, нужно вставить его специальный (для DX11) макрос препроцессора. Для более подробной информации изучите Особенности различных платформ
Enabling OpenGL Core
OpenGL Core is enabled by default on Mac and Linux. Your games and the Unity Editor use OpenGL Core on these platforms.
To enable OpenGL Core on Windows and make it the default, go to Edit > Project Settings > Player to open the Player Settings. Navigate to Other Settings and un-tick Auto Graphics API for Windows. In the panel that appears, click the plus (+) button and choose OpenGLCore from the list to add it.
Adding OpenGLCore to the Graphics APIs for Windows list
OpenGL Core has the following minimum requirements:
- Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2 to 4.1)
- Windows with NVIDIA since 2006 (GeForce 8), AMD since 2006 (Radeon HD 2000), Intel since 2012 (HD 4000 / IvyBridge) (OpenGL 3.2 to OpenGL 4.5)
- Linux (OpenGL 3.2 to OpenGL 4.5)
Image Effects that work well with DX11 and OpenGL Core
- Depth of Field effect (optimized Bokeh Texture splatting)
- Noise and Grain effect (higher quality noise patterns)
- Motion Blur effect (higher quality reconstruction filter)
Image Effects that work well with DX11 and OpenGL Core
- Depth of Field effect (optimized Bokeh Texture splatting)
- Noise and Grain effect (higher quality noise patterns)
- Motion Blur effect (higher quality reconstruction filter)
Тесселяционные и геометрические шейдеры
Поверхностные шейдеры (surface shaders) поддерживают простую тесселяцию и смещение (displacement). См. Тесселяция поверхностных шейдеров.
В процессе написания вручную шейдерных программ, вы можете использовать все возможности DX11 shader model 5.0, включая geometry, hull и domain шейдеры
Surface Shaders and DX11
Some parts of the Surface Shader compilation pipeline do not understand DX11-specific HLSL syntax, so if you’re using HLSL features like StructuredBuffers, RWTextures and other non-DX9 syntax, you need to wrap it into a DX11-only preprocessor macro. See documentation on Platform-specific differences for more information.
Compute Shaders
Compute Shaders allow you to use GPU as a parallel processor. See documentation on Compute Shaders for more information.
Compute Shaders
Compute Shaders allow you to use GPU as a parallel processor. See documentation on Compute Shaders for more information.
Вычислительные шейдеры
Вычислительные шейдеры позволяют вам использовать GPU как процессор с массовым параллелизмом. Для получения более детальной информации изучите Вычислительные шейдеры.
Читайте также: