Commit graph

501 commits

Author SHA1 Message Date
Christoph Oelckers
0a07f4c144 - fixed alpha texture generation for OpenGL rendering.
The old logic used a translation table that does not work with color images, it was designed to handle 8 bit grayscale images.
So now, it creates a true color buffer and then turns it into a texture with R,G,B = 255 and the alpha channel set to the grayscale value.

This was also the reason why crosshairs made from 32 bit PNGs did not show correctly.
2018-03-22 23:57:14 +01:00
Christoph Oelckers
5466e2c7c5 - fixed what looks like a wrongly braced 'for' loop in 4 bit PCX.
The code looks wrong, unfortunately I cannot test it due to lack of an image in that format
2018-03-22 23:14:43 +01:00
Christoph Oelckers
6fcf1e0149 - fixed incorrect translation table that was used to process grayscale patch and IMGZ textures.
- fixed: The MD5 check for patches deleted the buffer too early.
2018-03-22 22:49:42 +01:00
Christoph Oelckers
c869df9bf7 - added missing checksum file.
- fixed decoding of uncompressed DDS textures.

Apparently this was never tested and nobody ever used this format as a texture in ZDoom.
2018-03-22 22:30:09 +01:00
Christoph Oelckers
702e948000 Merge remote-tracking branch 'remotes/origin/adlMIDI' into alphatex2 2018-03-22 20:44:32 +01:00
Christoph Oelckers
d586d774cf - adjusted GL renderer to the new rules for alpha textures. This means that the translation fallback is only needed for the legacy renderer now. Modern GL can use the regular texture and will apply a grayscale mapping instead of merely using the red channel. 2018-03-22 20:42:17 +01:00
Christoph Oelckers
1756035594 - fixes in DDS decoder.
- let FPatchTexture use the inline color getters.
2018-03-22 00:54:03 +01:00
Christoph Oelckers
b473838627 - adjustments and fixes for alphatextures:
* Instead of using the red channel it now uses the grayscale value. While slower in a few situations, it is also more precise and makes the feature more useful.
* For paletted textures do not use the index as alpha anymore but the actual grayscaled color. This is again to make the feature more consistent and useful.
* To compensate for the above there is now a list of hashes for known alpha textures in patch format, so that they don't get broken.
* IMGZ is now considered a grayscale format. There's only two known textures that use IMGZ for something else than crosshairs and those are explicitly handled.
* several smaller fixes.
* the actual color conversion functions for paletted output are now consolidated in a small number of inlines so that future changes are easier to do.

Note: This hasn't been tested yet and will need further changes in the hardware rendering code. As it is it is not production-ready.
2018-03-22 00:29:01 +01:00
alexey.lysiuk
568d439c24 Removed deleted virtual functions
This solves linking errors on macOS with missing ___cxa_deleted_virtual symbol
2018-03-20 22:12:43 +02:00
alexey.lysiuk
6f68b6c352 Fixed JPEG errors reporting
GCC/Clang reported these warnings:
src/textures/jpegtexture.cpp:305:29: warning: data argument not used by format string [-Wformat-extra-args]
src/textures/jpegtexture.cpp:388:28: warning: data argument not used by format string [-Wformat-extra-args]
src/textures/jpegtexture.cpp:432:29: warning: data argument not used by format string [-Wformat-extra-args]
src/textures/jpegtexture.cpp:481:28: warning: data argument not used by format string [-Wformat-extra-args]
2018-03-20 10:29:28 +02:00
Christoph Oelckers
cf67883e6a - changed copyright notice. 2018-03-19 21:01:32 +01:00
Christoph Oelckers
16f6a88680 - fixed Build tiles and removed test code. 2018-03-19 20:56:04 +01:00
Christoph Oelckers
bf2003fe6a - fixed pixel address.
Colors still need work.
2018-03-19 20:09:32 +01:00
Christoph Oelckers
04b8a12ca4 - Build texture work. Currently broken. 2018-03-19 20:02:38 +01:00
Christoph Oelckers
f4d9ad1123 - extended FTexture::GetPixels and FTexture::GetColumn by a RenderStyle parameter.
Now it is no longer necessary to provide specially set up textures for rendering shaded decals, they can use any PNG texture now that contains a proper red channel.
Handling of the alPh chunk has been removed as a result as it in no longer needed.
2018-03-18 21:33:44 +01:00
Christoph Oelckers
a399d79f8a - minor reformatting. 2018-03-18 14:18:42 +01:00
Christoph Oelckers
47bfbb5e08 - Make BuildTexture inherit from worldtexture.
- handle WorldTextures that can change their content automatically.
2018-03-18 14:18:19 +01:00
Christoph Oelckers
94eadb1a8c - made it compile again. 2018-03-18 13:47:40 +01:00
Christoph Oelckers
de8db297a6 - made the backdrop texture also inherit from FWorldTexture.
In this case the only benefit is one less piece of GetColumn duplication - this texture is simply not usable in-game, unlike the BarShader.
2018-03-18 13:12:25 +01:00
Christoph Oelckers
494504229f - fixed the BarShader texture.
Even though unlikely, this should work as a regular texture because it can be used as such.
As a result of the above, true color generation needs to be done explicitly now.
2018-03-18 12:54:40 +01:00
Christoph Oelckers
1d59a53cd4 - added worldtexture.cpp 2018-03-18 12:54:14 +01:00
Christoph Oelckers
7e169eb76f - split out the span generation from most texture classes
Until now each subclass of FTexture had to implement the entire span generation itself, presumably so that a few classes can use simpler structures.
This does not work if a texture can have more than one pixel buffer as is needed for alpha textures.
Even though it means that some classes will allocate more data now, it's the only way to do it properly.
In addition this removes a significant amount of mostly redundant code from the texture classes.

- added alpha texture processing to all converted classes

As of now this is not active and not tested.
Note that as part of the conversion even those textures that were working as alphatextures will not look correct until the higher level code gets adjusted.
2018-03-18 12:36:14 +01:00
Christoph Oelckers
b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers
0be1ed252b - rewrote the operator>> methods of FileReader as normal functions for clarity. 2018-03-11 18:20:49 +01:00
Christoph Oelckers
b14ee50d0d - transition to new FileReader interface complete, but untested. 2018-03-11 12:33:46 +01:00
Christoph Oelckers
b315bc3be0 - added a few more FileRdr replacements
- fixed: The streaming music player must return the file reader if it fails to open, so that the next player can still use it.
- fixed: Timidity++'s Instruments class did not delete the sound font when it was destroyed.

..-
2018-03-10 20:33:49 +01:00
Christoph Oelckers
c4387459bb - use FileRdr in the PNG code, in particular to sanitize the savepic handling. 2018-03-10 19:22:26 +01:00
Christoph Oelckers
5fa63c396d - sound code and most of texture code converted to FileRdr.
This allowed to remove a lot of bad pointer voodoo in the music loader, because the new class does not allow duplication of the reader object
2018-03-10 18:45:11 +01:00
Magnus Norddahl
94fbcacf22 Merge branch 'gzdoom' into materials 2018-02-10 00:08:17 +01:00
Christoph Oelckers
c1d2b54820 - let TexMan.GetName return the actual name for a texture that was created from a full path name. 2018-01-28 11:54:24 +01:00
Magnus Norddahl
7a59bcde4c - move glossiness and specular level to GLDEFS 2018-01-25 19:53:55 +01:00
Magnus Norddahl
f3c55c01c8 Add material definition to GLDEFS 2018-01-20 16:28:24 +01:00
alexey.lysiuk
9b52c18ef6 Improved layout of FMultiPatchTexture::TexPart structure
Removed "gaps" between members (for 64-bit targets) and initialized them in place
2018-01-13 12:44:23 +02:00
alexey.lysiuk
d95ac93376 Fixed crash when resolving multipatches with missing textures
https://forum.zdoom.org/viewtopic.php?t=59088
2018-01-13 12:41:19 +02:00
Christoph Oelckers
20b8c1ef70 - moved buildtexture.cpp from using stdio-based file IO to FileReader. 2017-12-02 11:57:32 +01:00
Rachael Alexanderson
505da5bf4f Merge branch 'master' of https://github.com/coelckers/gzdoom into newtimercode4 2017-11-21 05:23:00 -05:00
Christoph Oelckers
f0dc619b5b - fixed bad use of FScanner::GetNumber and GetFloat in code inherited from ZDoomGL.
This could lead to bad error messages if some malformed definitions were used.
2017-11-19 15:30:45 +01:00
Rachael Alexanderson
909daadd75 - update more millisecond-storing data structures to u/int64_t to fix possible rollover bugs 2017-11-15 20:33:08 -05:00
Christoph Oelckers
0323f54384 - rename I_FPSTime function.
- now that the frame buffer stores its render time, the 'ms' return from I_GetTimeFrac is not needed anymore, we may just as well use the globally stored value instead.

The only feature this value was ever used for was texture warping.
2017-11-13 00:54:32 +01:00
alexey.lysiuk
f40a31409d Added ability to get texture name from script
Use TexMan.GetName(TextureID tex) member function
2017-10-24 11:11:33 +03:00
Christoph Oelckers
a1694a79c6 - removed the FGLBitmap class and replaced all uses with the regular FBitmap.
The only reason this ever existed is that the GL renderer used RGBA instead of BGRA but there's no reason why this is even necessary.
2017-06-18 09:14:33 +02:00
Christoph Oelckers
8b19ae98ea - consolidated the two averageColor instances. 2017-06-07 22:42:59 +02:00
alexey.lysiuk
dcded0e183 Handle unloading of canvas textures properly
https://forum.zdoom.org/viewtopic.php?t=56207
2017-05-01 16:20:25 +03:00
Christoph Oelckers
57d703236b - changed Doom source license to GPL in all subdirectories and fixed missing licenses in a few other files. 2017-04-17 12:27:19 +02:00
Christoph Oelckers
dc5a5419fc - took DCanvas and all its subtypes out of the DObject tree.
I have no idea why they were even in there, as they intentionally circumvented all GC related features - they declared themselves fixed if prone to getting collected, they all used OF_YesReallyDelete when destroying themselves and they never used any of the object creation or RTTI features, aside from a single assert in V_Init2.

Essentially they were a drag on the system and OF_YesReallyDelete was effectively added just to deal with the canvases which were DObjects but not supposed to behave like them in the first place.
2017-04-14 10:48:18 +02:00
Christoph Oelckers
6599e2c425 - moved the VM types into their own file and only include it where really needed. 2017-04-13 01:12:04 +02:00
alexey.lysiuk
ac5e516148 Removed obsolete forward declaration 2017-04-06 10:39:53 +03:00
Christoph Oelckers
bc95e5180d - moved the BarShader textures into the texture manager so that ZScript can use them. ZScript only knows about TextureIDs, but those require the texture to be handled by the texture manager. 2017-03-27 01:55:47 +02:00
Christoph Oelckers
a2f2be17ef - status screen fully scriptified but not active yet. 2017-03-18 19:35:26 +01:00
Christoph Oelckers
1e9ef2b1df - started scriptifying the level intermission screen. This compiles but is not active yet.
- allow treatment as one-character string constants as character constants. This became necessary because name constants already use single quotes and are much harder to repurpose due to a higher degree of ambiguity.
- fixed: protected methods in structs were not usable.
2017-03-18 12:18:15 +01:00
Christoph Oelckers
d423ad0d18 - moved CheckRealHeight from wi_stuff.cpp to texture code. 2017-03-17 23:08:22 +01:00
Christoph Oelckers
c9296ead57 - moved the skybox texture files to the main textures directory. 2017-03-17 21:12:09 +01:00
Magnus Norddahl
22d3599ea1 Fix warp texture crash in software renderer true color mode 2017-03-13 18:02:44 +01:00
Magnus Norddahl
0c9014b984 - move r_utility globals into r_viewpoint and r_viewwindow
- change r_utility functions to only work on FRenderViewpoint and FViewWindow
2017-03-11 23:28:07 +01:00
Rachael Alexanderson
81291e6892 - fixed: Clang on Linux compile 2017-03-11 11:01:30 -05:00
Christoph Oelckers
343db41b63 - changed the #defines in ddstexture.cpp into an enum
(because #defines suck...)
2017-03-10 20:08:39 +01:00
Christoph Oelckers
9b87a167d7 - replaced a large batch of DWORDs.
Most of those which still rely on ZDoom's own definition should be gone, unfortunately the code in files that include Windows headers is a gigantic mess with DWORDs being longs there intead of ints, so this needs to be done with care. DWORD should only remain where the Windows type is actually wanted.
2017-03-09 20:19:55 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
c008ddaf66 - replaced homegrown SWORD, SBYTE and uint32_t types. 2017-03-09 19:31:45 +01:00
Rachael Alexanderson
cc9a2e5121 Merge https://github.com/coelckers/gzdoom 2017-03-08 21:25:24 -05:00
Christoph Oelckers
6dee9ff566 - replaced another large batch of homegrown type use. 2017-03-08 18:55:53 +01:00
Rachael Alexanderson
2c27b74e34 Merge https://github.com/coelckers/gzdoom 2017-03-05 02:55:38 -05:00
Christoph Oelckers
600f57405f - fixed typo in TexMan.GetSize. 2017-03-05 00:28:15 +01:00
Rachael Alexanderson
21a8964bea Merge remote-tracking branch 'gzdoom/master'
# Conflicts:
#	src/v_video.cpp
2017-03-03 16:29:33 -05:00
Christoph Oelckers
c630b07011 - replaced SDWORD with int32_t globally.
This type wasn't used in the software rendering code so it could be removed already. The other homegrown types will have to be dealt with later.
2017-03-03 19:35:08 +01:00
Rachael Alexanderson
8c176575c8 Merge https://github.com/coelckers/gzdoom 2017-02-12 21:39:20 -05:00
Christoph Oelckers
947b625c50 - all menu items scriptified, but not yet active. 2017-02-11 16:11:48 +01:00
Rachael Alexanderson
a52f79055d Merge https://github.com/coelckers/gzdoom
# Conflicts:
#	src/menu/playerdisplay.cpp
2017-02-11 05:05:24 -05:00
Christoph Oelckers
98de1fcfcb - make the pixel buffer of the player backdrop dynamic. 2017-02-10 14:18:00 +01:00
Christoph Oelckers
65174af544 - moved the backdrop for the player box into the texture manager so that the menu doesn't have to bother with managing the texture itself. 2017-02-10 14:07:21 +01:00
Magnus Norddahl
1c3440e391 Merge remote-tracking branch 'gzdoom/master' into qzdoom
# Conflicts:
#	src/r_plane.cpp
#	src/r_plane.h
2017-01-16 06:03:21 +01:00
Christoph Oelckers
d2d6e5d486 - scriptified PowerFlight and PowerWeaponLevel2. 2017-01-15 23:21:38 +01:00
Rachael Alexanderson
de5f5a1221 Merge https://github.com/coelckers/gzdoom 2017-01-06 22:06:25 -05:00
alexey.lysiuk
1a0d8dffd9 Fixed harmless initialization order mismatch
No more 'field ... will be initialized after field ...' warnings reported by GCC/Clang
2017-01-06 10:40:51 +01:00
Rachael Alexanderson
de896920b4 Merge https://github.com/coelckers/gzdoom 2016-12-28 17:38:00 -05:00
Christoph Oelckers
02c3b3613f - added UDMF properties to set glows per sector.
- for explicitly defined glows, use the one for the current animation frame, if an animated texture is active. For default glows it will still use the base texture's to avoid inconsistencies.
2016-12-28 21:35:42 +01:00
Christoph Oelckers
3b823fa3eb Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	wadsrc/static/compatibility.txt
2016-12-22 11:29:44 +01:00
Rachael Alexanderson
978152f483 Merge https://github.com/rheit/zdoom
# Conflicts:
#	wadsrc/static/compatibility.txt
2016-12-19 08:16:41 -05:00
Rachael Alexanderson
5d85990d5f - Implementing RGB666-to-Palette colormatching for textures. 2016-12-19 13:46:08 +01:00
Rachael Alexanderson
a78b713f4b Merge https://github.com/coelckers/gzdoom
# Conflicts:
#	src/v_video.cpp
2016-12-06 18:19:08 -05:00
Christoph Oelckers
fbc8d0e83c Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript
# Conflicts:
#	wadsrc/static/zscript.txt
2016-12-03 18:51:10 +01:00
Christoph Oelckers
21e3aba1c7 - optionally allow passing a script position object to V_GetColor and subfunctions for better error output. Implemented this for all occurences where this info was available. 2016-12-03 16:27:53 +01:00
Rachael Alexanderson
c95372052c Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-02 16:39:50 -05:00
Christoph Oelckers
60b1f5c25a - fixed: FPNGTexture::fr could be left uninitialized. 2016-12-02 19:38:30 +01:00
Christoph Oelckers
c927aca2a0 Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript
# Conflicts:
#	wadsrc/static/zscript.txt
2016-11-30 18:46:23 +01:00
Rachael Alexanderson
2e7c512891 Merge branch 'master' of https://github.com/rheit/zdoom 2016-11-23 11:09:46 -05:00
alexey.lysiuk
e138a3ffbc Fixed infinite recursion with self-referencing multipatch textures
See http://forum.zdoom.org/viewtopic.php?t=54355
2016-11-23 14:33:31 +01:00
Magnus Norddahl
d084f77546 Fix mipmap generation bug
Fix crash due to dc_source2 not always being set
Add r_lod_bias to control mipmap selection
Improve LOD calculations to take the U texture coordinate into account
2016-11-05 16:12:59 +01:00
Christoph Oelckers
747b612860 Merge branch 'master' of https://github.com/rheit/zdoom 2016-11-03 19:42:03 +01:00
Magnus Norddahl
1ccf190c4f Merge remote-tracking branch 'zdoom/master' into qzdoom 2016-11-01 19:51:17 +01:00
Marisa Heit
9388597443 Add 1 pixel tall and wide texture support to the renderer
- These require manual detection and overriding of the scaling factors to
  0, because a right shift of (32-0) bits wraps around to 0 and results in
  no shift at all rather than leaving the register zeroed out.
2016-11-01 00:08:16 -05:00
Christoph Oelckers
7f2350cf64 Merge branch 'master' of https://github.com/rheit/zdoom 2016-10-29 16:08:46 +02:00
Rachael Alexanderson
9ed45c7e03 Merge branch 'master' of http://github.com/rheit/zdoom 2016-10-26 22:06:25 -04:00
Christoph Oelckers
327d4d85a7 - fixed: UseOffsets can only be handled after the patch is has been set up. 2016-10-26 15:02:20 +02:00
Rachael Alexanderson
692a0034b4 Merge http://github.com/rheit/zdoom 2016-10-26 06:10:52 -04:00
Christoph Oelckers
5309209039 - print a developer warning if the texture manager had to resolve a circular reference. 2016-10-26 12:03:28 +02:00
Christoph Oelckers
28fefdabc7 - added a 'listall' option to FTextureManager::ListTextures, so that the multipatchtexture lookup can find multiple older versions with the same use type.
This fixes an issue with DUMP 2 which looked for patches of the same name as the texture currently being defined and where the patches had the same use type as the composite texture. The function as implemented would only find the newly added composite and print an error.
2016-10-26 11:56:15 +02:00
alexey.lysiuk
316e3395ad Fixed crash on loading multipatch texture with height of 256
http://forum.zdoom.org/viewtopic.php?t=53953
2016-10-26 12:15:22 +03:00
Rachael Alexanderson
e533bc8234 Merge http://github.com/rheit/zdoom 2016-10-25 23:52:25 -04:00
Christoph Oelckers
fa8e05d56d - do not allow a multipatch texture to use itself as patch. Instead, look for an older texture with the same name. 2016-10-25 22:40:58 +02:00