Magnus Norddahl
48fd91227c
- fix compile error
2018-11-21 10:46:13 +01:00
Magnus Norddahl
dd42557e69
- implement a shader cache
2018-11-20 23:12:20 +01:00
Magnus Norddahl
216191c86d
- interpolate the normal for models
2018-11-20 13:41:27 +01:00
Christoph Oelckers
a5ee673c91
- exported ADecal to ZScript as a non-native class.
...
Its one function is still native but this was by far the easiest of the remaining actor classes to export.
2018-11-19 17:54:38 +01:00
Christoph Oelckers
e90ed0a01c
removed the quite redundant GetStateForButtonName function
...
Since it forwards directly to FindState and has no script bindings there is no need to keep it, it'd only complicate the full scriptification of the weapon class if it stuck around.
2018-11-19 18:26:23 +01:00
Christoph Oelckers
ad04001135
- fixed some issues with the bodyque and moved this variable into FLevelLocals
...
* it was never saved in savegames, leaving the state of dead bodies undefined
* it shouldn't be subjected to pointer substitution because all it contains is old dead bodies, not live ones.
2018-11-19 18:13:23 +01:00
Christoph Oelckers
02de10f657
- cleaned up the PointerSubstitution code
...
Since the only thing it gets used for is swapping out PlayerPawns it can safely skip all global variables that never point to a live player, which allowed to remove quite a bit of code here that stood in the way of scriptifying more content
2018-11-19 17:05:00 +01:00
Christoph Oelckers
108874f379
- fixed the reginfo checks for the Draw... functions.
...
They need to be offset by the same amount as the arguments so that the values are properly matched.
2018-11-18 21:18:15 +01:00
Christoph Oelckers
8bc2d50ad2
Merge branch 'master' into asmjit
...
# Conflicts:
# src/p_actionfunctions.cpp
2018-11-18 21:08:16 +01:00
Christoph Oelckers
426ee2b78e
- fixed: Ceiling render hack segments were inserted into the floor list and incorrectly rendered.
2018-11-18 20:03:06 +01:00
Christoph Oelckers
3aef8418d9
- fixed the type checks for object arrays.
...
Null pointers must be allowed and non-object pointers which are not null must be explicitly checked for because the code could crash on them when performing a static_cast on an incorrect type.
2018-11-18 19:48:09 +01:00
Christoph Oelckers
a9ec819557
- moved the type infomation entirely out of VMValue.
...
For the varargs functions that used the Type field to validate their parameters, now a hidden additional argument is passed which contains a byte array with the type info for the current call's arguments. Since this is static per call location it can be better prepared once when the code is being compiled instead of being put in a runtime created array for each invocation. Everything else uses the per-function instance of the same data.
The only thing that still needed the type field with a VMValue is the defaults array, so this uses a different struct type now to store its data.
2018-11-18 19:31:13 +01:00
Christoph Oelckers
a981737855
- generate register type info for the parameter lists of all functions.
...
Currently used for loading parameters into registers.
For checking parameters of native functions some more work is needed to get the info to the function. Currently it doesn't receive the function descriptor.
2018-11-18 17:10:55 +01:00
Major Cooke
a8d4d45e89
P_Thing_Raise fixes & cleanup
...
- Transfer flags directly into the function and process inside instead of the action functions
- Pass in raiser for all function calls
2018-11-18 15:28:05 +01:00
Magnus Norddahl
1ef772d017
- add missing CheckVMFrame call
2018-11-18 14:02:39 +01:00
Magnus Norddahl
a8a9ec98f3
- only allocate stack space for vmframe and call returns when we need them
2018-11-18 13:49:19 +01:00
Magnus Norddahl
748dbec77a
- improve dumpjit output slightly
2018-11-18 13:14:41 +01:00
Magnus Norddahl
e778f05b12
- don't emit VMValue.Type information when we know the receiver isn't going to read it anyway
2018-11-18 12:59:53 +01:00
Magnus Norddahl
486b7e0f3c
- delay emitting PARAM and VTBL instructions until CALL/CALL_K
2018-11-18 12:38:55 +01:00
alexey.lysiuk
4624c6e6a3
- use custom offsetof() macro
...
src/scripting/vm/jit_call.cpp:164:38: warning: offset of on non-standard-layout type 'VMScriptFunction' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:87:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:96:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:257:53: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
2018-11-18 12:48:50 +02:00
alexey.lysiuk
e4c238b6c7
- fixed compilation of POSIX targets
...
src/scripting/backend/vmbuilder.h:169:19: error: no member named 'function' in namespace 'std'
2018-11-18 12:37:07 +02:00
Christoph Oelckers
28db04b501
- missed one OP_RESULT.
2018-11-18 10:09:29 +01:00
Christoph Oelckers
fe0a341e0c
- moved all code related to function calls into the helper class so that all future work on the calling convention is in one place only.
2018-11-18 10:02:31 +01:00
Christoph Oelckers
cbedcff559
- moved all handling for the simple calls into EmitterArray to have it in one place only.
...
The main case of FxVmFunctionCall is not done yet, though.
2018-11-18 08:29:41 +01:00
Christoph Oelckers
629d329f22
- removed OP_TAIL.
...
The amount of support code for this minor optimization was quite large and this stood in the way of streamlining the VM's calling convention, so it was preferable to remove it before moving on.
2018-11-18 07:43:03 +01:00
Magnus Norddahl
4e0c5cf16c
- fix compile errors
2018-11-18 03:28:57 +01:00
Christoph Oelckers
292cf93fa7
- fixed TArray's Append methods.
...
I mistakenly assumed that Grow would incease the array's reserved space.
2018-11-18 01:23:14 +01:00
Christoph Oelckers
983c0c56b1
- changed OP_PARAM handling so that all registers remain allocated until the call instruction and reordered instruction emission so that the param instructions all directly precede the call instruction.
2018-11-18 01:06:04 +01:00
Christoph Oelckers
b2c07e731f
- completed the Dehacked fix.
...
I missed some arguments that were specified but set to 'not given'.
2018-11-17 21:33:21 +01:00
Christoph Oelckers
5180265ab1
- fixed: The Dehacked function wrappers now need full parameter lists.
2018-11-17 21:21:23 +01:00
Christoph Oelckers
533f66396d
Merge branch 'master' into asmjit
2018-11-17 20:16:03 +01:00
Christoph Oelckers
45ef7bca4f
- fixed: FTexture::SmoothEdges must forward its result to the base texture in case a redirection is in effect.
...
Both need the bMasked flag, or some code will think that the texture is not fully opaque if no holes were found.
2018-11-17 18:55:44 +01:00
Christoph Oelckers
08fe9c375b
- use the same formula for calculating 3DMidTex offsets as the renderer when per-sidedef scaling is used.
...
This reuses the FTexCoordInfo class the hardware renderer had been using to calculate wall texture offsetting.
The software renderers still need this sorted out to bring them in line with the rest of the code, though, but they do not have this code sufficiently well organized to make this a straightforward task.
2018-11-17 18:24:14 +01:00
Magnus Norddahl
7e0dacdb1d
- disabled code that shows how a thunk function and native setup would look like
2018-11-17 16:26:54 +01:00
Christoph Oelckers
701b793f24
- fixed parameter mixup with P_CanResurrect.
2018-11-17 16:21:08 +01:00
Christoph Oelckers
160f17a907
- fixed stencil cap generation for old hardware and changed it so that it only gets done once for each stencil setup, not for each stencil pass.
2018-11-17 15:34:23 +01:00
Christoph Oelckers
bb4007f16a
- fixed: CVar.ResetToDefault was missing a check for use outside of menus.
2018-11-17 15:23:57 +01:00
Christoph Oelckers
89cec539fa
- fixed IJMP code generation for the JIT compiler.
...
With a proper count value available this can be done properly. The only relevant targets are the jumps immediately succeeding the IJMP instructions, nothing else.
2018-11-17 13:39:14 +01:00
Christoph Oelckers
fcb5684607
- do not use instructions from too recent instruction set extensions.
...
andn is part of BMI1 which was introduced in 2012, which is far too recent to be used unchecked.
2018-11-17 13:10:18 +01:00
Christoph Oelckers
adde0510fe
- deconstruct A_Jump with multiple labels into A_Jump(chance, RandomPick(label1, label2, label3,...)) to remove this ugly special case from the VM calling convention.
...
This also adds the number of available choices to OP_IJMP.
2018-11-17 12:35:03 +01:00
Magnus Norddahl
68afc419af
- inline ReadBarrier, GetClass and GetClassMeta
2018-11-17 10:54:16 +01:00
Christoph Oelckers
6398c27646
- fixed RNG setup in FxRandom.
2018-11-17 10:06:01 +01:00
Christoph Oelckers
94ed30e782
- removed the default parameter handling from all native script functions because it is no longer needed.
2018-11-17 10:03:40 +01:00
Christoph Oelckers
e643582957
- fixed FxFRandom setup which used a path in FxRandom that is no longer supported.
2018-11-17 08:06:23 +01:00
Magnus Norddahl
f99bba48dc
- stop using lambda functions for CreateCall because MSVC lambas use a different calling convention and "converts" them to the right one by generating a thunk function
2018-11-17 05:12:47 +01:00
Magnus Norddahl
f082a8af98
- removed the SetupSimpleFrameMissingArgs logic as the number of args are now guaranteed
2018-11-17 00:49:22 +01:00
Magnus Norddahl
8ec85cb0ee
- add warning text when falling back to the VM
2018-11-17 00:36:40 +01:00
Christoph Oelckers
6423902c63
- removed the unused 'no arguments' cases from the BuiltinRandom functions and split off BuiltinRandom2 into its own function.
...
This removes the last non-vararg cases where a native VM function checks 'numparam'. As of this commit all function calls will pass the complete list of arguments.
2018-11-17 00:14:39 +01:00
Magnus Norddahl
ea26bf6b2f
- make functions using too many registers (more than 200) fall back to the VM
2018-11-17 00:04:15 +01:00
Christoph Oelckers
95ab1da6a0
- always pass complete argument lists in the VM.
2018-11-16 22:43:12 +01:00
Christoph Oelckers
16053c7cdb
- build full argument lists for action function calls.
...
This uses one static global array to avoid frequent reallocations.
2018-11-16 20:38:52 +01:00
Christoph Oelckers
97573a0452
- implemented VMCallWithDefaults and used it for all calls with variable arguments.
...
This isn't used for the 3 action function calls because it requires an array allocation which would be a bit too costly for something as frequently called as action functions.
They will need a different approach.
2018-11-16 19:18:33 +01:00
Christoph Oelckers
6d7710165c
- fixed last commit.
2018-11-16 18:50:34 +01:00
Christoph Oelckers
c24da62cdd
- marked all places where an incomplete parameter list may be passed to the VM by a native call by redirecting VMCall to an intermediate VMCallWithDefaults. This function must later fill in the missing arguments from the default.
2018-11-16 18:41:27 +01:00
Christoph Oelckers
acbdfddb26
Merge remote-tracking branch 'remotes/origin/master' into asmjit
2018-11-16 17:20:12 +01:00
Christoph Oelckers
33fb76698b
Avoid using argument count for any kind of decision making in native VM functions.
...
This allows retaining the functionality, even if for the JIT compiler's benefit all default arguments are pushed onto the stack instead of reading them from the defaults array.
2018-11-16 15:25:37 +01:00
Christoph Oelckers
8c57447108
- Restricted argument count check to the void return case.
...
There were some issues here:
* a check for mismatching count is too strict because it is legal to omit return values
* it failed to detect returning multiple values in a single expression.
2018-11-16 12:28:24 +01:00
Christoph Oelckers
358001c306
fixed right shift operator for unsigned values
...
This is version protected to avoid breaking old code.
2018-11-16 11:32:24 +01:00
Christoph Oelckers
7cd89fe07b
- fixed: FxUnaryNotBitwise modified the source operand instead of allocating a new one.
2018-11-16 11:21:51 +01:00
Christoph Oelckers
1250eb5323
- fixed: AActor' friction field was not saved
2018-11-16 08:06:01 +01:00
Magnus Norddahl
ac28f0d34f
- remove unused argument
2018-11-16 01:33:41 +01:00
Magnus Norddahl
34b037c9db
- avoid calling VMFillParams for simple stack frames
...
- split Setup into more functions
2018-11-16 01:13:25 +01:00
Player701
c569029b1d
- Readonly pointer casting now works in ZScript.
2018-11-15 23:28:37 +01:00
Magnus Norddahl
6c31d2e965
- add dword store to memset code
2018-11-15 23:04:11 +01:00
Magnus Norddahl
00d41432d8
- disable jit in 32-bit builds
2018-11-15 22:47:44 +01:00
Magnus Norddahl
5ef2175c38
- fix wrong offsets
2018-11-15 22:40:12 +01:00
Magnus Norddahl
0394dc56b7
- generate a memset for the allocated stack memory because that's what the VM does
...
(this really shouldn't be done by the VM either - the compiler backend should clear its registers if it wants them to be zero!)
2018-11-15 22:33:13 +01:00
Magnus Norddahl
f3e0db913c
- fix operand size mismatch error
2018-11-15 22:07:27 +01:00
Magnus Norddahl
3b2faf5397
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-15 22:02:11 +01:00
Christoph Oelckers
47138b748a
Make BounceFlags 32 bit wide.
2018-11-15 16:53:19 +01:00
Cacodemon345
07838f4c2a
BOUNCEONUNRIPPABLES flag; makes actors bounce on actors with DONTRIP flag
2018-11-15 12:47:57 +01:00
alexey.lysiuk
39a3527396
- fixed compilation of targets with optimization
2018-11-15 10:59:37 +02:00
Christoph Oelckers
aa4de71e6d
Merge branch 'master' into asmjit
2018-11-15 09:25:27 +01:00
Christoph Oelckers
cf590d73e4
- extended state caller check to work on CustomInventory items as well
...
Since CallStateChain is a public member in CustomInventory we cannot really be sure that the given state is valid so it needs checking as well.
2018-11-15 09:24:17 +01:00
Christoph Oelckers
0a21d19723
Added a run time check for calling a state action from the wrong actor type.
...
This can happen if a state that's retrieved with FindState gets used with a different actor type and can lead to hard to trace problems if not checked.
2018-11-15 09:04:38 +01:00
Chronos Ouroboros
96b8f12a30
Fix the code for MODF_RK in the JIT compiler.
2018-11-14 21:05:24 -02:00
Christoph Oelckers
9f6091519f
- changed the stencil cap drawer to only cover the area which is actually used by the portal.
...
This will now both exclude floor caps when only ceiling elements are used and everything outside the bounding box of active portal lines.
Hopefully this is enough to fix the issues with portal caps but of course it is not foolproof if someone just makes the right setup.
2018-11-14 23:30:46 +01:00
Christoph Oelckers
a23d1c2d25
- went back to the original portal stencil setup from 3.4.0.
...
The main reason is to unify the portal hierarchy again. The split into a hardware independent and a hardware dependent part turned out to be unnecessary and complicated matters.
Another issue was that the new stencil setup code was having a few subtle problems, so this recreates the original ones with indirect API calls.
2018-11-14 21:03:54 +01:00
Chronos Ouroboros
566eb58000
Fixed the Vector2/3 != operator.
2018-11-14 20:01:13 +01:00
Chronos Ouroboros
5375a99cf6
Added support for CMP_APPROX to EQV_R and moved the code to a template.
2018-11-14 10:29:48 -02:00
Magnus Norddahl
8429fc8124
- fix missing type check when using Push or Insert for typed arrays
2018-11-14 10:08:04 +01:00
Magnus Norddahl
99849bc0c5
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-14 01:23:17 +01:00
Christoph Oelckers
a6b44b02b7
- fixed incompletely initialized secplanes in sprite splitting code.
...
The recent optimization of the shader setup needs the negiC value properly set.
2018-11-13 20:36:23 +01:00
Major Cooke
55f17fa90c
Changed A_RaiseActor to just RaiseActor.
2018-11-13 19:01:56 +01:00
Major Cooke
f47210df4e
Fixed inconsistency.
...
- P_Thing_Raise returned true while P_Thing_CanRaise returned false for the condition of having no raise state. P_Thing_Raise now returns false.
2018-11-13 19:01:56 +01:00
Major Cooke
71d2b39d92
Added A_RaiseActor(Actor other, int flags = 0)
2018-11-13 19:01:56 +01:00
Major Cooke
b553be153d
Added CanResurrect(Actor other, bool passive)
...
- Works similarly to CanCollideWith.
- Passive means the caller is trying to be resurrected by 'other'.
- Non-passive means the caller is trying to resurrect 'other'.
2018-11-13 19:01:56 +01:00
Christoph Oelckers
33f2f9f34e
- fixed: ZScript's finalization code used the last parsed lump for of one translation unit as reference, not the base lump.
...
This resulted in incorrect messages but also could produce some more subtle errors.
2018-11-12 00:22:50 +01:00
Christoph Oelckers
ca2defa6a2
- added ZScript export for side_t::SetSpecialColor.
2018-11-12 00:13:14 +01:00
Christoph Oelckers
65a6866a1b
- fixed typo in ceiling render hack code.
2018-11-11 22:22:29 +01:00
Christoph Oelckers
59790302ec
- fixed rendering of lower untextured linedef parts.
2018-11-11 22:17:44 +01:00
Christoph Oelckers
a0a2230b92
- removed test code that was accidentally left in.
2018-11-11 21:50:33 +01:00
Christoph Oelckers
f2dcff4386
- more options for Doom 64 style gradients on walls:
...
* Colors can npw be defined per sidedef, not only per sector.
* Gradients can be selectively disabled or vertically flipped per wall tier.
* Gradients can be clamped to their respective tier, i.e top and bottom of the tier, not the front sector defines where it starts.
The per-wall colors are implemented for hardware and softpoly renderer only, but not for the classic software renderer, because its code is far too scattered to do this efficiently.
2018-11-11 16:04:36 +01:00
Player701
d37192c1e8
- Fixed: Decal generator should be taken from the current weapon instance instead of the default instance.
2018-11-11 15:07:57 +01:00
Christoph Oelckers
d3aa9c6af1
- do not abort on unclosed sections.
...
Apparently they can indeed happen with broken map setups like isolated linedefs somewhere in the wild (see Strife MAP08.)
Although they are a problem for triangulation, this isn't what sections get used for currently so it's of no real concern.
In case this is needed later their work data gets marked as 'bad' for the time being.
2018-11-11 10:08:13 +01:00
Christoph Oelckers
094afdfd5f
- fixed: It may happen that a degenerate subsector ends up without any section or sector. Try to assign the best fit in such a case so that the relevant pointers are not null.
2018-11-11 09:33:40 +01:00
Christoph Oelckers
c946edd9bf
- instead of copying the sector planes to GLWall, just store pointers to the front and back sector for later use.
...
Until now this wasn't doable because these could have come from hw_FakeFlat which only were local copies on the stack.
With the recent change these faked sectors live long enough so that they can be passed around here.
2018-11-10 23:19:08 +01:00
Magnus Norddahl
e6023c55a8
- modify exception checks to jump ahead if the exception is to be thrown as it limits static misprediction
2018-11-10 22:48:20 +01:00
alexey.lysiuk
67e012e445
- fixed compilation on POSIX-like platforms
...
src/p_udmf.cpp:2052:6: error: no matching member function for call to 'OpenMem'
src/sc_man.h:24:7: note: candidate function not viable: expects an l-value for 2nd argument
src/sc_man.h:23:7: note: candidate function not viable: requires 3 arguments, but 2 were provided
src/resourcefiles/file_directory.cpp:198:32: error: use of undeclared identifier 'Filename'; did you mean 'FileName'?
2018-11-10 22:32:09 +02:00
Christoph Oelckers
a90655b295
- cache the results of hw_FakeFlat for the remainder of the current scene instead of storing this in local variables.
...
An exception is made for the sprite drawer which needs to call this in the worker thread on some occasions for as-yet unprocessed sectors.
This case may not alter the cache to avoid having to add thread synchronization to it.
The main reason for this change is that pointers to such manipulated sectors can now be considered static in the renderer.
Due to them being short lived local buffers it was not possible to carry them along with the render data for information retrieval.
2018-11-10 20:07:00 +01:00
Magnus Norddahl
a7ef178284
- fix a typo
2018-11-10 19:56:54 +01:00
Magnus Norddahl
173fe94736
- fix the throw messages
2018-11-10 19:52:41 +01:00
Major Cooke
9a7f570b19
Added DMG_NO_ENHANCE for DamageMobj.
...
- Disables PowerDamage's effect, similar to DMG_NO_PROTECT disabling PowerProtect.
2018-11-10 16:18:33 +01:00
Christoph Oelckers
191f2d9d76
- use TArray and FString in resource file management.
2018-11-10 14:19:55 +01:00
Christoph Oelckers
4d06c17a44
- a few more buffers converted.
2018-11-10 14:18:34 +01:00
Christoph Oelckers
6894912f44
- use TArray for most buffers in p_glnodes.cpp.
2018-11-10 14:15:39 +01:00
Christoph Oelckers
3448749de6
- replaced a few temporary allocations with TArray and added a few convenience loader functions for this.
...
Amazingly with today's optimizers this creates code which is just as good as doing it all manually with the added benefit of being safer.
2018-11-10 11:56:18 +01:00
Christoph Oelckers
602ea8f723
- made some minor changes to TArray after finding out that "new int()" is not the same as "new int".
...
With parentheses this initializes to 0 which created needless initialization code in a few places.
2018-11-10 10:43:35 +01:00
Christoph Oelckers
cfe51f0c30
- hole filling subsectors must also be explicitly triangulated for the automap because they may be non-convex.
2018-11-10 08:04:03 +01:00
Christoph Oelckers
fb7345e470
Merge branch 'master' into asmjit
2018-11-09 22:36:16 +01:00
Christoph Oelckers
3c5609537a
- fixed vector math instructions to use the same order of operations as the VM.
2018-11-09 22:36:08 +01:00
Christoph Oelckers
0caabbe355
- clear spechit before leaving P_CheckPosition.
...
Otherwise this may contain residual data from the last call.
One can only hope that this doesn't cause other side effects - this entire code is one horrendous mess of bad ideas.
2018-11-09 19:06:54 +01:00
Christoph Oelckers
f6af50fc74
- restored portal code that shouldn't have been deleted.
2018-11-08 20:39:44 +01:00
Major Cooke
cdd60b1431
Changed IsPointInMap to use P_PointOnDivlineSide.
2018-11-08 14:50:04 +01:00
alexey.lysiuk
ed72843dec
- fixed undefined behavior when grouping sections
...
The current group should not be accessed by reference because its container can be reallocated during iteration
https://forum.zdoom.org/viewtopic.php?t=62487
2018-11-07 23:04:42 +02:00
Major Cooke
9ff7f338fd
Added IsPointInMap(Vector3 p).
...
- Checks if a point is inside the map geometry or not.
2018-11-07 15:16:45 -05:00
Christoph Oelckers
4eecaada67
- added copyright header to p_destructible.cpp
2018-11-07 19:27:35 +01:00
Christoph Oelckers
9661c3b53c
- moved hw_Sections to r_data, because this is an essential component of the dynamic light system now so it is needed for all renderers.
2018-11-07 00:53:44 +01:00
Christoph Oelckers
bad2a7c49b
- silenced debug message in standard mode.
2018-11-07 00:43:11 +01:00
ZZYZX
a276ebfb08
Exported destructible geometry to ZScript
2018-11-07 00:12:37 +01:00
ZZYZX
ed3355acc6
Explode bouncing projectiles if hit damageable geometry
2018-11-07 00:12:37 +01:00
ZZYZX
d85e5afdfb
Destructible geometry - minor fixes and 3D floor support
2018-11-07 00:12:37 +01:00
Christoph Oelckers
752a64c840
- fixed typo in sight checking code.
2018-11-07 00:12:03 +01:00
Christoph Oelckers
c28f001cb2
Merge branch 'sections'
2018-11-06 23:50:16 +01:00
Christoph Oelckers
f2e593f8bf
- disabled the hack for fixing the original design of the portal in KDiZD's Z1M1.
...
This portal got fixed in a later re-release of KDiZD and no other portal needs this runtime fix to my knowledge.
The main problem here is that this runtime fix requires some manipulation of the render data that does not work anymore.
Should other maps need this fix as well they are probably best served with a compatibility entry.
2018-11-06 21:41:16 +01:00
Christoph Oelckers
085bf0d33f
- fixed Transfer_Heights and 3D floors.
2018-11-06 20:53:45 +01:00
Christoph Oelckers
ddc75f7ba5
- made the common render hacks functional again as separate render items.
2018-11-06 20:31:44 +01:00
Christoph Oelckers
a6e77ae094
Refactored the render hack storage so that it can be decoupled from the regular GLFlat render items.
...
Having these in there makes it impossible to change render techniques so these are better done as separate items.
2018-11-06 18:20:59 +01:00
Christoph Oelckers
aee47d23bd
- fixed validcount for real and added a side check for intra-section sides to light code.
2018-11-06 11:53:03 +01:00
Christoph Oelckers
df52a71475
- fixed validcount.
2018-11-06 01:01:59 +01:00
Christoph Oelckers
87973ff504
- added handling for intra-sector lines to lighting code.
2018-11-06 00:47:43 +01:00
Christoph Oelckers
ba66c0c889
- changed dynamic light traversal to use sections instead of the subsectors.
...
This is mostly complete, except for handling intra-section sidedefs.
2018-11-06 00:13:23 +01:00
Christoph Oelckers
9ddca3c3a9
- removed the subsector light lists as a preparation step to move over the light traversal code to use sections instead of subsectors.
2018-11-05 22:35:24 +01:00
Christoph Oelckers
375dd7e28f
- the sections are now being used as the smallest element to draw flat planes.
...
This also removes one piece of code that was used to cope with the missing clip planes on old ATI cards, so support for those will most likely have to be dropped in the near future.
2018-11-05 22:14:18 +01:00
Christoph Oelckers
50bd9c3594
- flatvertex generation is working again.
2018-11-05 21:29:57 +01:00
Christoph Oelckers
625eb1e76a
- FVertexBuilder's output looks correct now.
2018-11-05 21:11:54 +01:00
Christoph Oelckers
950ed07ae6
WIP
2018-11-05 15:30:50 +01:00
Christoph Oelckers
d7db00d92e
- sector rendering refactoring for sections - work in progress.
2018-11-05 01:01:48 +01:00
Christoph Oelckers
0deb388a75
- automatically create sections and store them with the level data.
...
- added subsector indexing to sections.
This is needed for finding a section from a point.
2018-11-04 22:19:11 +01:00
Christoph Oelckers
705c87c6cc
- fixed bad case in #include.
2018-11-04 21:33:35 +01:00
Christoph Oelckers
c847180bdc
- reinstated the sector light clamping threshold from before version 3.3.
...
It turned out that without the clamping the feature does not work well, thanks to a poorly chosen scale of the original arguments.
2018-11-04 20:57:18 +01:00
Christoph Oelckers
49bfdbef9f
- create an intermediate structure between sectors and subsectors.
...
A section is a continuous part of a sector or in some case of several nearby continuous parts. For sectors with far away parts multiple sections will be created, especially when they lie in disjoint parts of the map.
This is mainly supposed to cut down on time for linking dynamic lights. Since they need to traverse subsectors to find all touching sidedefs a more coarse data structure that only contains the info needed for this is more suitable. In particular, this does not contain any intra-sector lines, i.e. those with both sides in the same sector.
2018-11-04 20:10:51 +01:00
Player701
9b7114a96d
- undid the save version bump
2018-11-04 19:58:57 +01:00
Player701
56f76a141e
- Added a function to get the actor's age in ticks.
2018-11-04 19:58:57 +01:00
Player701
a6dbfcf9c2
- Added a new field to the Actor class which stores the amount of ticks passed since the game started on the moment the actor was spawned.
...
- Added a function to the Actor class to get its spawn time relative to the current level.
- Added spawn time information to the output of the "info" console command.
2018-11-04 19:58:57 +01:00
Cacodemon345
b1d35eb0b3
Extend SKYEXPLODE flag for LineAttack
2018-11-03 15:24:30 +01:00
alexey.lysiuk
53bf598aee
- restored screen clear in Cocoa backend when setting video mode
...
This still doesn't work well in windowed mode
In fullscreen the effect is quite noticeable thought
2018-11-03 13:09:30 +02:00
Christoph Oelckers
1ccbbcb81d
- added a method to FileReader to read the contents into an array and used it on the MIDI sources for testing.
2018-11-02 10:20:12 +01:00
Christoph Oelckers
c07aeb7498
- use a single TArray to allocate the memory for the lump manager's hash lists.
2018-11-02 09:51:44 +01:00
Magnus Norddahl
534606f4ce
- add vm_jit cvar to control JIT compilation
2018-11-01 21:39:30 +01:00
Magnus Norddahl
369dcfd57f
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-01 21:23:26 +01:00
alexey.lysiuk
8597c9e326
- added warning for constant conditional expression
...
ZScript code like `if (x = 0) // ...` no longer causes assertion failure in Debug but produces a warning regadless of configuration
https://forum.zdoom.org/viewtopic.php?t=62422
2018-11-01 16:05:27 +02:00
alexey.lysiuk
d99aeb0895
- fixed potential crash when drawing status bar log
...
src/g_statusbar/shared_sbar.cpp:1133:34: warning: comparison of integers of different signs: 'unsigned int' and 'int'
[-Wsign-compare]
2018-11-01 13:37:11 +02:00
alexey.lysiuk
504a7f00b6
- fixed two potentially dangerous compilation warnings
...
src/hwrenderer/dynlights/hw_lightbuffer.h:51:29: warning: comparison between signed and unsigned integer expressions
[-Wsign-compare]
src/hwrenderer/scene/hw_renderstate.h:196:44: warning: operation on '((FRenderState*)this)->FRenderState::mVertexOffsets[0]' may
be undefined [-Wsequence-point]
2018-11-01 12:51:22 +02:00
Christoph Oelckers
b9f2cce8de
- versioned the return mismatch check to demote it to a warning for older versions than 3.7.
2018-11-01 11:30:53 +01:00
alexey.lysiuk
d3461be40c
- made 'return void' case a compilation error
2018-11-01 11:18:22 +01:00
Christoph Oelckers
b79622bcba
- added far stronger restrictions for when the Boom-Texture-Y-offset compatibility flag may trigger.
...
This had absolutely no sanity checks and unconditionally picked the source texture if one existed.
It should only be done for wall textures, only for those defined in TEXTUREx and only for those where the scale is identical with the underlying texture.
2018-11-01 10:51:57 +01:00
Christoph Oelckers
c5153ca095
- fixed: Do not pass Sysex messages to Windows's GS Wavetable synth.
...
This will totally refuse to play a MIDI if that happens.
Duke Nukem's Alienz.mid, which did not play before works after this change.
2018-11-01 10:22:21 +01:00
Christoph Oelckers
f7ce4dd2da
- added fake vid_renderer CVAR so that mods that checked for it to determine the renderer will get 1 returned instead of 0.
...
The majority of mods which did such a thing checked for the hardware renderer so this should be the default.
2018-11-01 09:43:11 +01:00
Christoph Oelckers
9df7ce1f9a
- fixed: P_DamageMobj should clear reactiontime only for non-players.
...
For players this variable has an entirely different meaning which does not agree with being modified here.
2018-11-01 09:27:38 +01:00
Christoph Oelckers
aa69d63a65
- made DBrokenLines serializable.
2018-11-01 09:02:20 +01:00
Christoph Oelckers
23aff98e90
- fixed handling of wrapped midtextures to be actually useful when used in sky sectors.
2018-11-01 08:02:11 +01:00
ZippeyKeys12
77c5c1eb19
Export AllClasses
2018-11-01 00:20:46 +01:00
Cacodemon345
eaaf0cb8f6
Fix bounce state not entering when hit from top.
2018-11-01 00:11:57 +01:00
Jonathan Russell
f39a389e99
- changed the way alpha works on DrawLine and DrawThickLine so they're consistent
2018-11-01 00:10:47 +01:00
Major Cooke
6a8b0df4ba
Added VelIntercept.
...
- Uses the same code as Thing_ProjectileIntercept to aim and move the projectile.
- targ: The actor the caller will aim at.
- speed: Used for calculating the new angle/pitch and adjusts the speed accordingly. Default is -1 (current speed).
- aimpitch: If true, aims the pitch in the travelling direction. Default is true.
- oldvel: If true, does not replace the velocity with the specified speed. Default is false.
- Split the code from Thing_ProjectileIntercept and have that function call VelIntercept.
2018-11-01 00:10:08 +01:00
ZZYZX
849d110f10
Fixed sector floor/ceiling actions not triggering in P_XYMovement
2018-11-01 00:05:43 +01:00
Christoph Oelckers
a388b6c8ab
- added missing nullptr check.
2018-10-31 23:23:02 +01:00
ZZYZX
a6cdcab128
Implemented loading/saving of line/sector health and health groups in savegames
2018-10-31 22:14:40 +01:00
Tommy Nguyen
40c56bad09
- fix _mm_pause() compiler error and zero initialize atomics
2018-10-31 22:35:56 +02:00
Christoph Oelckers
98b8a2b1f4
- missed one place where FBrokenLines was used.
2018-10-31 20:36:23 +01:00
Christoph Oelckers
4343d0b9c5
- fixed: An exception inside DestroyAllThinkers could send the engine into an endless loop of failed destructions.
2018-10-31 20:07:24 +01:00
Christoph Oelckers
0d54d335c4
- use a saner data structure to store the BrokenLines.
...
Calling the old method with a pointer to an array of unspecified length 'dirty' would be an understatement.
Now it uses a TArray to store the single elements
2018-10-31 19:13:54 +01:00
ZZYZX
b911bbc424
Single commit - destructible geometry feature
2018-10-31 17:22:09 +01:00
Christoph Oelckers
a33cc13054
- make GCC happy... :(
2018-10-31 17:20:04 +01:00
Player701
3e609f2b87
- Introduced an enum named EventHandlerType and changed the bool argument in E_NewGame to this type.
2018-10-31 17:19:21 +01:00
player701
04ae32f6f9
- Static NewGame events now fire before loading a map, and normal NewGame events fire after registering per-map handlers and before all other events.
...
- Static event handlers now unregister after per-map handlers.
- All event handlers now unregister in reverse order.
2018-10-31 17:19:21 +01:00
Christoph Oelckers
2dec7bb1e5
- added a non-multithreaded option for the renderer and fixed a few places where the wrong sector was used
...
The render_sector is only relevant for flats, but never for walls or sprites!
2018-10-31 17:13:22 +01:00
Christoph Oelckers
91df3f8c73
- added option to disable alpha testing for user shaders.
2018-10-31 15:56:20 +01:00
Christoph Oelckers
37166b5faf
- fixed missing binding of the light buffer.
...
I thought this wasn't needed but apparently the buffer refactoring caused this not to be done automatically anymore.
Best have it once at the start of each frame where the cost is negligible.
2018-10-31 12:48:09 +01:00
Christoph Oelckers
41fd34e424
- use standard sprite lighting for voxels.
...
Per-pixel lighting requires normals which voxels do not have.
2018-10-31 12:28:10 +01:00
Christoph Oelckers
3a6f186aa0
- removed memcpy workarounds from GLWall, GLFlat and GLSprite after making sure that all 3 are trivially copyable.
2018-10-31 11:51:52 +01:00
Christoph Oelckers
fdf324cce5
- fixed error message for old OpenGL versions. There was still a mention of "with framebuffer support" which is core in 3.3.
2018-10-31 10:50:45 +01:00
Christoph Oelckers
533ded8d1e
Merge branch 'master' into mt
2018-10-31 10:20:29 +01:00
Christoph Oelckers
790b121195
- added a bit of profiling code to the multithreaded parts of the renderer.
2018-10-31 10:20:06 +01:00
Christoph Oelckers
01a0af8ad1
- simplified the render job interface.
...
Since the job nodes were already taken from a static array, the added linked list isn't really needed. All we need is a read and a write pointer into the array, This can even be done without a spinlock as long as we assume that the list never overflows.
2018-10-31 09:49:07 +01:00
Christoph Oelckers
e9c2247ff4
- added missing file.
2018-10-31 09:22:38 +01:00
Christoph Oelckers
e4d2ec8cb2
- added a few comments to the renderstate to document where certain functions are used.
2018-10-31 08:16:44 +01:00
Christoph Oelckers
aafa445aac
- fixed stencil marking for SSAO.
2018-10-30 23:33:45 +01:00
Christoph Oelckers
e2e34f5245
- cleanup of the buffer binding interface.
...
Some stuff is not really needed and the vertex buffers no longer need to insert themselves into the render state.
2018-10-30 22:43:58 +01:00
Christoph Oelckers
1be1470d47
- cleanup of hw_bsp.cpp.
2018-10-30 22:19:55 +01:00
Marrub
0b460ccb03
Squashed commit of the following:
...
commit 767e3a64f0d5fd27ef56de6e93221e9b2016a0c7
Author: Marrub <marrub.xz@gmail.com>
Date: Tue Oct 30 04:01:09 2018 -0400
ProMessage -> PronounMessage
commit 305477f63fb669f8cf2d9f6d609ed3988f437664
Author: Marrub <marrub.xz@gmail.com>
Date: Mon Oct 29 23:56:58 2018 -0400
improve variable naming
commit f3f0245d0cdcc1b0a8a9b74806bc8954be747f40
Author: Marrub <marrub.xz@gmail.com>
Date: Mon Oct 29 19:52:32 2018 -0400
add "neutral" gender option and better obit formatting
2018-10-30 21:42:09 +01:00
Christoph Oelckers
48bc5550d7
- removed the Bind function from FFlatVertexBuffer.
...
This is not flexible enough. There was already one place where this was not supposed to go through the render state.
The new interface allows more general use of the contained buffer objects.
2018-10-30 19:28:47 +01:00
Christoph Oelckers
fa498611f8
- uncoupled texture precaching from regular binding for rendering.
...
The precaching should not depend on code that may be subject to change.
2018-10-30 19:27:10 +01:00
Christoph Oelckers
55df324d16
- basic multithreading for the render data generation.
2018-10-30 14:58:43 +01:00
Rachael Alexanderson
94688a3700
- do a texture check when drawing fog borders in the software renderer. this does not fix the crash issue, but mitigates it enough with a check that likely should be in place, anyhow.
2018-10-30 01:13:00 -04:00
alexey.lysiuk
0c686e6f92
- more fixes for GCC
...
error: ‘size_t’ does not name a type
error: ‘assert’ was not declared in this scope
2018-10-29 22:57:45 +02:00
Christoph Oelckers
b56e80a556
- disabled the buffer reallocation option for the light buffer.
...
The entire idea with CPU side buffering simply can not work since the buffer is being used live. To compensate the buffer's size was doubled.
2018-10-29 21:53:43 +01:00
alexey.lysiuk
2e02b7e555
- fixed compilation of SDL backend
...
error: unknown type name 'OpenGLFrameBuffer'
2018-10-29 22:41:24 +02:00
alexey.lysiuk
d2c7ffb2ca
- fixed crash with Cocoa backend on startup
2018-10-29 22:33:27 +02:00
alexey.lysiuk
2aac222d35
- fixed compilation on macOS
...
error: non-constant-expression cannot be narrowed from type 'unsigned long' to 'int' in initializer list
error: unknown type name 'OpenGLFrameBuffer'
2018-10-29 22:32:36 +02:00
Christoph Oelckers
47ae42d636
- fixed: for sectors that have to be drawn per subsector the render state was not applied. resulting in random garbage.
2018-10-29 17:52:44 +01:00
Christoph Oelckers
f7446160bb
Merge branch 'master' into renderstate_abstraction
2018-10-29 14:00:43 +01:00
Christoph Oelckers
118bc78fe3
- moved the entire OpenGL backend into a separate namespace.
2018-10-29 13:56:17 +01:00
Christoph Oelckers
0c8b36e121
- moved the texture resizer to hwrenderer.
...
This is pure math and will be shareable with Vulkan.
2018-10-29 13:18:48 +01:00
Christoph Oelckers
190a225301
- minor cleanup.
2018-10-29 13:00:12 +01:00
Christoph Oelckers
893e08df70
- moved DrawScene to GLRenderer and call it through std::function.
...
This was the last remaining virtual override of HWDrawInfo.
With it removed this type is now fully API independent.
2018-10-29 12:54:10 +01:00
Christoph Oelckers
325d2126ec
- moved ProcessScene to hwrenderer
2018-10-29 12:25:41 +01:00
Christoph Oelckers
8991537e57
- moved the 2D drawer tp hwrenderer.
2018-10-29 12:14:36 +01:00
Christoph Oelckers
8a0596893b
- fixed dynamic light profiling counters.
...
The draw counters were never incremented and this should be reset only once per scene, not once per viewpoint.
2018-10-29 10:36:48 +01:00
Christoph Oelckers
361bb688c8
- moved Set3DViewport to hwrenderer.
2018-10-29 10:21:52 +01:00
Christoph Oelckers
362ecacd52
- moved the End*Scene functions to hwrenderer.
2018-10-29 09:58:37 +01:00
Christoph Oelckers
1bbc9f6730
- removed two of the state flags in SetStencil and handle them explicitly.
2018-10-29 09:53:07 +01:00
Christoph Oelckers
163d6be0d7
- added a few more GL state wrappers to the render state.
...
Not used yet.
2018-10-29 09:41:26 +01:00
Christoph Oelckers
f6d9592a45
- moved calls to renderstate from buffer implementation into a subfunction so that it's easier to change if needed.
2018-10-29 09:40:03 +01:00
Christoph Oelckers
90982285ac
- moved the mSceneClearColor variable to main DFrameBuffer class.
2018-10-29 09:34:30 +01:00
Christoph Oelckers
98e111eba0
- merged the nearly identical wrapper texture classes for the software render and the wiper.
2018-10-29 07:39:33 +01:00
Christoph Oelckers
6dc47ff328
- the last commit was incomplete.
2018-10-29 07:06:29 +01:00
Christoph Oelckers
5528981a77
- CreateScene, too.
2018-10-28 23:32:13 +01:00
Christoph Oelckers
70f9507f16
- moved RenderPortal, too.
2018-10-28 23:18:19 +01:00
Christoph Oelckers
24d6b23042
- moved RenderScene and RenderTranslucent to hwrenderer.
2018-10-28 22:58:35 +01:00
Christoph Oelckers
9b56f407dd
- moved all 'present' functions into FGLRenderer.
...
This list of functions contained half of the existing references to the global GLRenderer variable.
2018-10-28 22:36:52 +01:00
Christoph Oelckers
9f9d747a6b
- moved all methods that would involve command buffer manipulation in Vulkan to FRenderState, because that's the object that would serve as command buffer builder.
2018-10-28 22:20:51 +01:00
Christoph Oelckers
2ee2766812
- moved more code from FDrawInfo to HWDrawInfo.
...
The entire setup/takedown code did not reference any API specific data. The only thing needed is a global virtual creation function.
2018-10-28 19:39:31 +01:00
Christoph Oelckers
1ca811d4a8
- moved more code out of FDrawInfo.
2018-10-28 19:19:46 +01:00
Christoph Oelckers
cb4ffbf053
- moved the draw lists back to the API independent side.
...
The original idea was to let Vulkan do this completely differently, but if that comes to pass it should be done without having generic data maintenance code on the API side.
2018-10-28 19:06:29 +01:00
Christoph Oelckers
df15f00a21
- moved more code out of 'gl'.
2018-10-28 18:49:29 +01:00
Christoph Oelckers
e6efee61b1
- moved the last remaining function from gl_shadowmap.cpp elsewhere so that the file can be deleted.
2018-10-28 17:09:22 +01:00
Christoph Oelckers
54f46fdfee
- moved most of FShadowMap to IShadowMap, except the main Update function.
2018-10-28 16:11:04 +01:00
Christoph Oelckers
cc058f98a5
- use IDataBuffer for the shadow map generator's buffers.
2018-10-28 15:59:20 +01:00
Christoph Oelckers
926a918e0c
- moved the light buffer pointer to globally visible state.
2018-10-28 15:22:48 +01:00
Christoph Oelckers
b2776c9351
- moved lightbuffer files to hwrenderer.
2018-10-28 15:09:33 +01:00
Christoph Oelckers
bd7df13200
- let the light buffer use IDataBuffer as well.
2018-10-28 15:04:57 +01:00
alexey.lysiuk
49c3ec6a87
- fixed compilation warnings reported by GCC and Clang
...
src/gl/data/gl_viewpointbuffer.cpp:142:12: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/gl/data/gl_viewpointbuffer.cpp:142:34: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
2018-10-28 15:59:28 +02:00
Christoph Oelckers
54de0bf59f
- changed a bit more stuff that doesn't need to be routed through the OpenGL interface anymore.
2018-10-28 14:25:29 +01:00
Christoph Oelckers
f7c7c8d1c5
- moved some buffer variables out of GLRenderer into common parts of the code so that they can be accessed from hwrenderer as well.
...
This will allow more code to be moved out of the API dependent parts.
2018-10-28 13:56:24 +01:00
Christoph Oelckers
c5b3b9e107
- moved the viewpoint buffer to hwrenderer.
2018-10-28 13:26:47 +01:00
Christoph Oelckers
b51cc8b115
- base the viewpoint buffer on IDataBuffer.
2018-10-28 13:18:13 +01:00
Christoph Oelckers
3b26e64404
- renamed the 'vertexbuffer' files to 'buffers' because it's now generic for all buffer types.
2018-10-28 12:04:20 +01:00
Christoph Oelckers
a1fb1f60f4
- replaced IUniformBuffer with IDataBuffer, which reuses the code for the other buffer types and is more flexible.
2018-10-28 11:54:26 +01:00
Christoph Oelckers
8abf09afe2
- consolidated buffer implementations.
...
Since this is nearly identical for different buffer types they should share the same code wherever possible.
2018-10-28 09:45:51 +01:00
Christoph Oelckers
9e109995cd
- moved model renderer to hwrenderer after removing the remaining traces of OpenGL.
2018-10-28 00:40:41 +02:00
Christoph Oelckers
51acf3053c
- fixed model vertex buffer setup.
...
Setting the buffer and its attribute bindings must be one step, not twp. With Vulkan this is a single API call.
This removes the now obsolete SetVertexBuffer method from the model renderer's interface.
2018-10-27 23:33:22 +02:00
Christoph Oelckers
a62cd64138
- removed all direct OpenGL dependencies from gl_models.cpp.
2018-10-27 22:55:33 +02:00
Christoph Oelckers
ac37ff422a
- removed unneeded Apply call.
...
This had a problem with being called before some data was going to be deleted so its applied buffer state got lost.
2018-10-27 22:30:50 +02:00
Christoph Oelckers
83e706afe7
- - removed the remains of the old FVertexBuffer class.
2018-10-27 22:04:13 +02:00
Christoph Oelckers
067716cefb
- made sky vertex buffer backend independent.
2018-10-27 21:31:27 +02:00
Christoph Oelckers
b92b7ca0a7
- fixed a few more places where unwanted dynamic lights were still active.
2018-10-27 19:25:51 +02:00
Christoph Oelckers
537faa16dc
- fixed: Before rendering a portal the dynamic light index must be reset.
...
Otherwise the portal may 'inherit' some light of the last rendered item.
This is important for non-scene portals which have no dynamic lighting.
2018-10-27 19:16:56 +02:00
Christoph Oelckers
cd8c7a17eb
- model vertex buffer converted.
2018-10-27 16:59:13 +02:00
Christoph Oelckers
5201501534
- added lock/unlock methods to the buffer implementations.
...
These are not interchangeable with Map/Unmap!
Map/Unmap is for mapping a buffer for updating on old hardware, Lock/Unlock are for manually copying some initialization data directly into a static buffer.
2018-10-27 16:04:28 +02:00
Christoph Oelckers
5a4e5a8038
- moved the remaining parts of the main vertex buffer to hwrenderer.
2018-10-27 14:42:24 +02:00
Christoph Oelckers
dad3c50ebd
- renamed classes before continuing.
2018-10-27 14:27:43 +02:00
Christoph Oelckers
72bc7693bd
- refactored main vertex buffer (but didn't merge with hwrender class yet.
2018-10-27 14:24:47 +02:00
Christoph Oelckers
332ab220ad
- hooked low level buffers into render state.
...
It still needs to support the old interface so the code isn't really clean
2018-10-27 10:55:35 +02:00
Christoph Oelckers
3db26a3a1b
- added an abstract index buffer implementation as well.
2018-10-27 10:26:51 +02:00
Christoph Oelckers
bb09f5488f
- added an abstract base vertex buffer class.
2018-10-27 09:07:26 +02:00
Christoph Oelckers
5cce310f11
- fixed line portal setups in one-subsector maps.
2018-10-27 00:47:24 +02:00
Christoph Oelckers
fa85717155
- a bit of code reordering.
2018-10-25 22:50:45 +02:00
Christoph Oelckers
4f4bcd2d7d
- moved DrawSorted back to HWDrawList.
2018-10-25 22:45:55 +02:00
Christoph Oelckers
21b658d34f
Merge branch 'master' into renderstate_abstraction
2018-10-25 22:30:26 +02:00
Christoph Oelckers
c98474d1c7
- portal refactoring complete.
2018-10-25 22:30:03 +02:00
Magnus Norddahl
952ffb289c
Merge branch 'master' of https://github.com/coelckers/gzdoom
2018-10-25 12:41:08 +02:00
Magnus Norddahl
2404634d5d
- fix softpoly bug where sprites and translucent walls in front of models would disappear
2018-10-25 12:40:56 +02:00
Christoph Oelckers
bc97e585ba
- removed some leftover GL2 code.
2018-10-25 01:02:16 +02:00
Christoph Oelckers
cead0194bd
- safety commit. To finalize we need a better vertex buffer interface.
2018-10-25 00:49:39 +02:00
Christoph Oelckers
3940f17980
- portals are now completely on the hwrenderer side.
...
The only thing that still needs to be on the backend side is the one function that manages the rendering.
2018-10-25 00:25:55 +02:00
Christoph Oelckers
e6b5eba469
- moved GLScenePortal to the hardware independent code.
2018-10-24 07:57:32 +02:00
Christoph Oelckers
c76c4b77ec
- merged GLPortal into HWPortal after all direct OpenGL dependencies have been removed.
2018-10-24 07:49:06 +02:00
Christoph Oelckers
d757efde96
- renamed IPortal to HWPortal
2018-10-24 07:35:22 +02:00
Christoph Oelckers
3e4dcbe2b4
- groundwork for separating the portal data from the renderer.
...
With GLPortal being responsible for all the setup a lot of code was tied to the backend.
Now FDrawInfo will manage the setup and only call pure data generation functions in the actual portal object.
2018-10-24 00:19:07 +02:00
Christoph Oelckers
93dac4e4d8
- some reorganization of portal code.
2018-10-23 22:32:00 +02:00
Tommy Nguyen
75bd1b00b4
- use value initialization for secspecial_t
2018-10-23 20:30:27 +02:00
Magnus Norddahl
43c30ff485
- fix null pointer crash
2018-10-23 09:17:55 +02:00
Magnus Norddahl
22422635a0
- portal check is overridden by a different inverted check in the software renderer
2018-10-23 09:08:41 +02:00
Magnus Norddahl
af9757abaf
- Cull two-sided lines using the same rules as the software renderer is using (as suspicious as they may be)
2018-10-23 07:42:14 +02:00
Christoph Oelckers
93599e483f
- moved weapon drawing to hwrenderer.
2018-10-22 23:40:44 +02:00
alexey.lysiuk
2ba6148834
- fixed default values for S_ChangeMusic
...
https://forum.zdoom.org/viewtopic.php?t=62323#p1076849
2018-10-22 08:19:56 +03:00
Christoph Oelckers
08e1b49988
- removed include
2018-10-21 20:21:16 +02:00
Christoph Oelckers
3775c4756e
- moved sprite drawer to hwrenderer as well.
2018-10-21 17:50:01 +02:00
Christoph Oelckers
346a9ce149
- fixed initialization.
2018-10-21 14:45:03 +02:00
Christoph Oelckers
0af65a8fa0
- removed the direct setters for the blend mode state.
...
This will now always have to go through the render state.
2018-10-21 14:26:14 +02:00
Christoph Oelckers
a3aaa5cc8b
- removed old RenderStyle management.
2018-10-21 14:18:08 +02:00
Christoph Oelckers
8ffeb7812f
- made wall draw code API independent.
2018-10-21 13:53:50 +02:00
Christoph Oelckers
7897f26abf
- started reworking the wall drawer.
2018-10-21 13:11:36 +02:00
Christoph Oelckers
acad8315d0
- move stencil recursion counter to render state.
2018-10-21 10:58:11 +02:00
Christoph Oelckers
a97d71a3c3
- draw decals in hardware independent code.
2018-10-21 10:51:26 +02:00
Christoph Oelckers
1768508c80
- first adjustments to decal code.
...
- moved texture mode constants to a global header and consolidated with the variants of the 2D drawer.
2018-10-21 08:14:48 +02:00
Christoph Oelckers
3b7a5da83e
- moved AddFlat to gl_drawinfo.cpp and deleted gl_flats.cpp.
2018-10-21 00:38:56 +02:00
Christoph Oelckers
d45f6b9bea
- moved the flat drawer to hwrenderer.
2018-10-21 00:35:39 +02:00
Christoph Oelckers
e8f48e7535
- moved the color/fog setters to hwrenderer.
2018-10-20 23:33:07 +02:00
Christoph Oelckers
fac7c7a31c
- abstraction of render style in render state.
2018-10-20 23:14:57 +02:00
Christoph Oelckers
9ef5e00cdf
- some cleanup and preparation on RenderState interface.
2018-10-20 21:36:50 +02:00
Christoph Oelckers
3c3be0d349
- started with an abstract render interface, most importantly handle the stencil for plane flooding through the render state object instead of changing GL state directly.
2018-10-20 21:08:24 +02:00
Rachael Alexanderson
e2f6fa95d4
- fixed: attaching a new status bar to a player now calls 'setsizeneeded' - fixes an issue where the screen geometry is out of sync with the characteristics of the new status bar.
2018-10-20 13:22:11 -04:00
Christoph Oelckers
510aa600dd
- moved hw_renderstate.h to hwrenderer folder and renamed one GL constant it was using.
2018-10-20 18:37:12 +02:00
Christoph Oelckers
a4f7fd2e46
- started splitting the render state struct.
...
Reusable parts should be in hwrenderer later.
2018-10-20 13:34:29 +02:00
Christoph Oelckers
4603d01ba1
- removed some unused content from FGLRenderState.
2018-10-20 13:11:03 +02:00
Christoph Oelckers
9a03ba3cc5
- renamed FRenderState to FGLRenderState.
2018-10-20 13:05:36 +02:00
Christoph Oelckers
5f838d52b9
- some cleanup on the OpenGL interface and its flags.
...
Most importantly, the separate command line options for switching on the legacy buffer handling have been removed.
There's really no need for them anymore, because unlike in earlier versions many of the implementation differences no longer exist - with the exception of where the light and vertex buffer contents are generated.
For testing this, -glversion 3 is sufficient.
2018-10-20 12:55:25 +02:00
Christoph Oelckers
9253118bdc
- removed the quad drawer class
...
This isn't needed anymore.
2018-10-20 11:59:12 +02:00
Christoph Oelckers
74ba142eae
- allow vertex creation for sprites in the setup pass.
...
Currently only used by legacy hardware.
2018-10-20 11:53:20 +02:00
Christoph Oelckers
d37cd63fda
- use setter methods for glow initialization of sectors.
2018-10-20 11:28:51 +02:00
Christoph Oelckers
00c8c6e3b2
- generate vertices for skybox sectors in the processing pass.
...
Aside from the sprites this was the only other remaining use of FQuadDrawer.
2018-10-20 11:22:55 +02:00
Christoph Oelckers
e5ff500c5a
- rewrote render hacks to prepare their vertex data in the processing pass.
...
This eliminates 3 of the 5 remaining occurences of FQuadDrawer and gets a large section of code out of the GL backend into the common hardware rendering code.
# Conflicts:
# src/gl/scene/gl_scene.cpp
2018-10-20 10:56:12 +02:00
Christoph Oelckers
c5d1b884dd
- fixed incorrect block size calculation.
2018-10-20 10:50:22 +02:00
Christoph Oelckers
6f81310fa7
Reinstate light buffer resizing, using the same method as for the model matrix buffer
2018-10-20 10:50:02 +02:00
Christoph Oelckers
ad80efd6be
Prepared light buffer for multithreaded use
...
This necessitated removing the reallocator because that cannot be done in a multithreaded context in OpenGL. The buffer should be large enough anyway, it it all gets used, slowdowns would be unavoidable.
There was also some simplification of the buffer alignment math for uniform buffers
2018-10-20 10:49:06 +02:00
Christoph Oelckers
84a55667d9
- removed more old code from flat renderer.
...
VBOHeightCheck was from early development when interpolation was not reflected by the vertex buffer.
# Conflicts:
# src/gl/scene/gl_flats.cpp
2018-10-20 10:39:28 +02:00
Christoph Oelckers
07649fd31a
- removed some leftover code for handling dynamic lights in the render pass.
...
# Conflicts:
# src/gl/scene/gl_flats.cpp
2018-10-20 10:36:39 +02:00
Christoph Oelckers
acb9505606
- fixed cherry-picked commit so that modern OpenGL can still do the light setup in the render pass.
2018-10-20 10:33:26 +02:00
Christoph Oelckers
a9c8546ba3
- changed dynamic light setup so that it is completely in the processing pass, not the render pass.
...
# Conflicts:
# src/gl/scene/gl_flats.cpp
# src/hwrenderer/scene/hw_flats.cpp
2018-10-20 09:46:53 +02:00
Magnus Norddahl
6a327ff898
Merge remote-tracking branch 'origin/master' into asmjit
2018-10-17 08:55:21 +02:00
Magnus Norddahl
295fc7d7f7
Revert "- the build tests are using some ancient dino 7.1 Windows SDK where UnwindInfoAddress isn't part of the struct yet."
...
This reverts commit 20516e1c0b
.
2018-10-17 08:54:41 +02:00
Marisa Kirisame
1e6454598c
Preserve line locknumber in savegames.
2018-10-16 08:58:37 -04:00
Magnus Norddahl
20516e1c0b
- the build tests are using some ancient dino 7.1 Windows SDK where UnwindInfoAddress isn't part of the struct yet.
2018-10-15 03:06:40 +02:00
Magnus Norddahl
1f0add9067
- update JIT PARAM handling to match the VM instruction change
2018-10-14 23:13:30 +02:00
Magnus Norddahl
70f18f87b9
Merge remote-tracking branch 'origin/master' into asmjit
2018-10-14 22:55:57 +02:00
Magnus Norddahl
1a2e5b12d0
- RUNTIME_FUNCTION only exists in 64-bit Windows
2018-10-14 22:54:30 +02:00
Rachael Alexanderson
239b57b41c
- fixed: use 'setsizeneeded' more often in the scaling code. recalculating screen geometry for 2D elements when it changes never really hurts.
2018-10-14 16:27:08 -04:00
Christoph Oelckers
dd719f0f14
- extended the register limit for 'param'.
...
The instruction one free instruction byte so it's now using that to extend its argument's register range to 65535.
For param this is needed because it passes strings by reference and creating an implicit temporary copy for string constants does not work here.
2018-10-14 09:13:26 +02:00
Magnus Norddahl
cd211da2d8
- fix wrong shift direction
2018-10-14 08:53:18 +02:00
Magnus Norddahl
a3f6950a4f
- build enough of the unwind opcodes for visual studio's debugger to produce the correct call stack
2018-10-14 08:27:27 +02:00
player701
6dc026895c
- Exported PickNewWeapon function from PlayerPawn to ZScript.
2018-10-14 00:52:00 +02:00
Magnus Norddahl
cf9bae67a8
- construct our own runtime as the one provided by asmjit is too primitive
2018-10-14 00:46:54 +02:00
Magnus Norddahl
300553a21f
- add more names to asmjit objects
2018-10-12 08:02:35 +02:00
Magnus Norddahl
7ca598de2d
- remove the frameX registers as they were just constant offsets to vmframe that could be merged into other constant offsets
2018-10-12 07:41:16 +02:00
Magnus Norddahl
b15ca09486
- give the remaining virtual registers names
2018-10-12 07:05:42 +02:00
Magnus Norddahl
c86e4480b6
- give temp registers names and reuse the FString object for formatting names
2018-10-12 06:59:03 +02:00
Magnus Norddahl
0bb4a159e5
- skip RESULT opcodes when outputting assembly
2018-10-12 06:25:51 +02:00
Magnus Norddahl
44294a051a
- clean up assembly output slightly by only generating labels for the opcodes jumped to
2018-10-12 06:14:27 +02:00
Magnus Norddahl
c099b2d3c8
Merge remote-tracking branch 'origin/master' into asmjit
2018-10-12 05:38:33 +02:00
Magnus Norddahl
ade6ae24e9
- fix CASTB opcode implementation
2018-10-11 04:32:49 +02:00
Magnus Norddahl
fc870fce87
- fix missing convert from float to double in LSP and LSP_R opcodes
...
- fix missing convert from double to float in SSP and SSP_R opcodes
2018-10-11 03:53:11 +02:00
Magnus Norddahl
aa6e09f7e8
- fix debug build compile error
2018-10-11 03:14:42 +02:00
Magnus Norddahl
0120ea190c
- remove the need to do any VARF_Native runtime checks by making native functions use the same calling convention as the script version
2018-10-10 23:47:56 +02:00
Magnus Norddahl
b6bc06e568
- do script calls directly from asmjit without using a lambda wrapper
...
- do VARF_Native check at compile time when possible
2018-10-10 22:08:26 +02:00
Rachael Alexanderson
ec7e855a56
- g3.7pre
2018-10-10 02:25:32 -04:00
Magnus Norddahl
01825231ec
- add -dumpjit command line parameter that dumps the JIT log for all functions to dumpjit.txt
2018-10-10 06:17:35 +02:00
Magnus Norddahl
452c6fd158
- fix return warning
2018-10-10 04:57:35 +02:00
Christoph Oelckers
0dc7f6be19
- fixed: MD3s with a skin-less surface left the renderer in an undefined state.
...
The frame interpolation factor wasn't reset and rendering prematurely aborted with no chance to recover.
2018-10-09 19:16:15 +02:00
Magnus Norddahl
884e185db0
- switch to using setjmp/longjmp for exception handling
2018-10-09 16:30:55 +02:00
Magnus Norddahl
2b05e75656
Merge branch 'asmjit' of https://github.com/coelckers/gzdoom into asmjit
2018-10-09 14:46:40 +02:00
Magnus Norddahl
3f4638ca31
- add disabled code that attempts to load registers directly from function arguments
2018-10-09 14:46:27 +02:00
Rachael Alexanderson
e223a25863
- fixed: smooth teleporters could fudge the player over an adjacent line, causing the player to appear on top of a cliff that is much higher than the original teleport.
2018-10-09 06:55:56 -04:00
Magnus Norddahl
9c3b8507af
- add missing include statement
2018-10-09 07:15:46 +02:00
Magnus Norddahl
f0d9b49099
- allocate VMFrame on the stack for simple functions with no strings
2018-10-09 05:19:29 +02:00
Magnus Norddahl
bee3a964ae
- remove argument not used anymore
2018-10-09 05:18:44 +02:00
Magnus Norddahl
b7c0cd5d05
- move VM creation into the jitted function. this will allow the jit compiler to skip vm frame creation when possible
2018-10-09 03:37:11 +02:00
Magnus Norddahl
e930dfaae7
- create ScriptCall function pointer on VMScriptFunction
2018-10-09 02:52:07 +02:00