Commit graph

280 commits

Author SHA1 Message Date
Kevin Caccamo
bb8c66b3a0 Fix rendering and parsing of OBJ models
Create a new surface for each 'usemtl' statement in the OBJ file, and fix memory errors caused by TriangulateQuad.

Calculate missing normals, and fix incorrect UV coordinates

Fix construction of vertex buffer for objects with multiple surfaces

Localize curMtl, curSurface, aggSurfFaceCount, and curSurfFaceCount to FOBJModel::Load(), since they are not used anywhere else.

Fix parsing of OBJs without UV references

Internally, I replaced hashtag line comments with C-style line comments, and I replaced each forward slash with newSideSep.

If no UV coordinates are available, add a default vector of (0,0).

Also, remove "this->" from ResolveIndex to make the code a bit cleaner, and fix a minor garbage issue I failed to notice earlier (normref would pick up garbage if there was no normal reference).

Ensure usemtl statements remain intact

It may be a bit inefficient, but I tried modifying the buffer directly, and I got memory corruption errors. In this case, it's a lot better to be safe than sorry.
2018-09-01 07:28:26 +02:00
Kevin Caccamo
1c15fb2408 Initial work on OBJ model support
What works:
- Parsing the model
- Constructing geometry (surfaces) for triangulated models

What doesn't:
- Rendering the model
- Building the vertex buffer
- Triangulating quads
2018-09-01 07:28:26 +02:00
Marisa Kirisame
a2f7d36dc3 Fix model rendering only using interpolated yaw. Pitch and roll are now also interpolated. 2018-08-05 09:40:01 -04:00
alexey.lysiuk
9d2b7e560b - fixed compilation warning reported by MSVC
src\r_data\models\models_ue1.cpp(103): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
2018-08-03 16:29:13 +03:00
Christoph Oelckers
4a7b1aada7 Merge remote-tracking branch 'remotes/origin/modern'
# Conflicts:
#	wadsrc/static/shaders/glsl/main.fp
2018-07-20 10:19:07 +02:00
Magnus Norddahl
1ef9938320 - fix user defines and textures not working 2018-07-15 23:34:58 +02:00
Magnus Norddahl
fcb14494d7 - improve the gldefs syntax by allowing the shader to be specified in the material section 2018-07-15 23:21:06 +02:00
Magnus Norddahl
8a500a25f5 - rewrite the user shader support for materials - new syntax is to create a 'Material ProcessMaterial()' function 2018-07-15 23:01:40 +02:00
Christoph Oelckers
33ee0f3c27 Merge branch 'master' into modern
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/gl/renderer/gl_renderer.h
#	src/gl/renderer/gl_renderstate.h
#	src/gl/system/gl_framebuffer.cpp
#	src/gl/system/gl_framebuffer.h
2018-07-14 13:18:34 +02:00
usernameak
7de9e1f097 Added ability to set defines in custom HW shaders 2018-07-14 12:01:54 +02:00
usernameak
e306d4ee04 Fix codestyle; add ability to name the textures 2018-07-14 12:01:54 +02:00
usernameak
fa51a54042 Made ability to define custom material shaders for ProcessMaterial function 2018-07-14 12:01:54 +02:00
usernameak
292458ee2d Custom hardware shaders now can use custom texture units 2018-07-14 12:01:54 +02:00
Christoph Oelckers
124fe63d00 Merge branch 'master' into modern 2018-07-14 10:24:41 +02:00
Marisa Kirisame
e5249f302a UE1: Clean up and restructure model class.
UE1: Add support for Deus Ex format vertex data.
UE1: Group triangles by skin index AND type/flags (preparation for per-surface render style support).
UE1: Add handling of Weapon Triangle (preparation for model attachment support).
UE1: Support flat shaded triangle flag.
2018-07-04 21:31:48 +02:00
Christoph Oelckers
6ebec37baf - moved all portal code that sets up a scene to be rendered into API independent code and let it be handled by a common wrapper class. 2018-06-23 23:03:34 +02:00
Christoph Oelckers
d2309af3d5 Merge remote-tracking branch 'remotes/origin/master' into modern
# Conflicts:
#	src/d_main.cpp
#	src/hwrenderer/scene/hw_weapon.cpp
2018-06-19 19:40:52 +02:00
Christoph Oelckers
46d73e7b4b Pass ticFrac to the model renderer as a parameter
This also removes the rather pointless gl_RenderModel functions because with their two lines of content they can just be placed inline.
2018-06-19 09:18:27 +02:00
Christoph Oelckers
4937848123 - refactoring of fixed colormap stuff to have it better organized and to reduce the number of uniforms in the main shader.
This removes 3 uniforms, consisting of 9 floats. Those were merged into other values that never get used at the same time.
It also moves the costly setup of the fixed colormap out of the render state into the 2D processing code.
Since 3D forces use of render buffers now, it is no longer necessary to draw the entire scene with the colormap active, meaning it can be handled more efficiently.
2018-06-16 22:40:44 +02:00
Magnus Norddahl
2abf700c29 - fix missing include 2018-06-06 00:30:59 +02:00
Magnus Norddahl
5464d2a577 - add dynamic lights to softpoly and software renderer models 2018-06-05 22:43:11 +02:00
Magnus Norddahl
0dbcdc8a9c - fix negative rotation speed not working 2018-06-02 20:35:51 +02:00
Christoph Oelckers
94d1a73ae8 - pass mirroring info to model drawers.
Actual evaluation only implemented in OpenGL. Not tested yet because the bug report had no testable example.
2018-06-02 13:07:47 +02:00
Marisa Kirisame
58f4af6ded Transform UE1 vertex coords to GZDoom's when importing, rather than leaving it up to the end user. 2018-06-02 10:00:31 +02:00
alexey.lysiuk
81f042f08b - fixed compilation with Clang and GCC
src/gl/scene/gl_flats.cpp:215:3: error: cannot jump from this goto statement to its label
src/r_data/models/models.cpp💯18: error: no member named 'floor' in namespace 'std'
2018-06-02 09:43:33 +03:00
Magnus Norddahl
359b13b783 - fix rotationSpeed being ignored after the model interpolation fix 2018-06-01 20:48:24 +02:00
Magnus Norddahl
771931db9f - forgot to remove the remarked comment 2018-05-24 01:00:31 +02:00
Magnus Norddahl
fb9cf33af6 - enable #include support in modeldef files 2018-05-24 00:59:45 +02:00
alexey.lysiuk
26ebb938c1 - fixed compilation with GCC/Clang
https://forum.zdoom.org/viewtopic.php?f=2&t=60657
2018-05-22 21:48:31 +03:00
Magnus Norddahl
91aec1689e - move modeldef parsing to its own function (ParseModelDefLump)
- rename gl_InitModels to InitModels
- add commented out support for #include in modeldefs (blocked by gene tech having broken #include statements in its modeldef files)
2018-05-22 01:28:57 +02:00
Magnus Norddahl
31abe3df7e - avoid reusing the same mVBuf pointer for the different renderers as that causes too many problems when switching between them
- remove gl_ prefix for model functions that are no longer GL specific
2018-05-21 17:52:03 +02:00
Magnus Norddahl
cc4a09a3d2 - fix model interpolation bug 2018-05-21 14:23:30 +02:00
Marisa Kirisame
0c4a08460f Cleaned UE1 math by using FVector classes.
Reversed winding order on vertex buffer creation as UE1 uses CCW.
2018-05-19 17:09:06 +02:00
alexey.lysiuk
9257c9cc0c - fixed compilation warnings reported by GCC/Clang
src/r_data/models/models.cpp:418:33: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
src/r_data/models/models.cpp:427:38: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
src/r_data/models/models_ue1.cpp:49:37: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
2018-05-19 13:28:53 +03:00
Christoph Oelckers
2962fe9f08 - silence some warnings. 2018-05-18 00:12:58 +02:00
Christoph Oelckers
46a57fdfa1 - moved the postprocessing CVARs to hwrenderer. 2018-05-17 20:51:42 +02:00
Christoph Oelckers
ea98fe3c4d - moved the hardware independent part of custom postprocessing shaders from gl to hwrenderer. 2018-05-17 20:23:01 +02:00
Christoph Oelckers
c0837f42bd - gl_system.h as well, in particular this has no place in hw_* files. 2018-05-16 23:34:52 +02:00
Christoph Oelckers
fb876852bb - fix warnings. 2018-05-16 22:56:02 +02:00
Marisa Kirisame
1bb00ed4f0 Fix for Unreal meshes that don't have sequential texture numbers 2018-05-16 22:11:24 +02:00
Marisa Kirisame
98f279b651 Remove unnecessary checks. 2018-05-16 20:47:11 +02:00
Marisa Kirisame
ffc12eec29 Discarded "UMSH" packed format, now loads _d.3d + _a.3d pairs 2018-05-16 20:47:11 +02:00
Marisa Kirisame
f285e550d6 Add support for packed Unreal Engine 1 vertex mesh format.
(concatenated "UMSH" signature + datafile + anivfile)
This is pretty much 100% functional by now.
Hasn't been tested on platforms other than Linux yet, though.
Code definitely deserves some cleaning.
2018-05-16 20:47:11 +02:00
Magnus Norddahl
49c9de350f - GetTimeFloat is not renderer specific 2018-05-07 00:40:12 +02:00
Christoph Oelckers
7aea010892 - added a sector index to the subsector struct.
This will be used to process dynamic lights for flats in the processing pass, allowing to remove the lights-only pass entirely.
2018-04-30 23:48:16 +02:00
Christoph Oelckers
fbcf2033c6 Corrected render style definition 2018-04-27 09:34:02 +02:00
Christoph Oelckers
dd524b046e - GLWall is mostly clean, except some smaller things in gl_sky.cpp 2018-04-27 00:22:00 +02:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
alexey.lysiuk
3212da8fcf Cleaned up #include's in dynamic lights code 2018-04-19 11:12:29 +03:00
Christoph Oelckers
e77cba1fd8 - added a 'lightsizefactor' command to gldefs.
This is for mitigating the recently discovered problem with attenuated lights getting reduced in size, even on OpenGL 3+. The intent of the shrinking was to account for higher brightness of non-attenuated lights on OpenGL 2 and was never meant to be active on more modern versions.
The factor will apply to any attenuated light defined after it and will be inherited by included sub-lumps, but it will only last for the lunp it is set in.

If you have a definition for the broken behavior, AddLightAssociation

'lightsizefactor 0.667' at the top of your GLDEFS.
2018-04-18 22:15:06 +02:00