/
Changelog.txt
1981 lines (1393 loc) · 133 KB
/
Changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
VP 10.8.0 Changelog
------------------------
FEATURES:
- VPX and VPVR are finally reunited!
So, similar to the VP9.9 release, this pretty much rearchitects VPs whole rendering pipeline, but still allows to play all tables with (hopefully) pretty much the same look and feel.
Some of the changes that came in via VPVR:
- added SDL2 / OpenGL / OpenGLES as an additional render pipeline.
switching between DirectX 9 and OpenGL is (for now) only possible at compile time, thus two executables are shipped.
- the new OpenGL pipeline is also capable to render to VR devices (support for SteamVR):
To use VR you need a SteamVR compatible HMD, a Steam account, and the Steam client/app
with SteamVR client installed. More information on OpenVR + SteamVR can be found on http://steamvr.com
You may also want to check out OpenComposite, as it seems to provide a performance boost for some users.
- autodetection of SteamVR driver installation. If its not installed, the standard 2D mode is started up instead.
If VR drivers are installed, and the HMD is turned on, VPX starts in VR mode. Otherwise a prompt shows up to choose between VR mode and 2D mode (can be disabled).
- the new OpenGL pipeline also is no longer computing/approximating Stereo3D only from depth buffer information.
If any stereo mode is enabled, the table is then always rendered to two independent eye buffers instead.
This increases CPU and GPU load for all stereo modes, but increases the image quality.
Also anti-aliasing can be enabled for all stereo modes.
- super-sampling based anti-aliasing can now be adjusted with a slider from 0.5 (downsampling) up to 2.
The factor describes the scaling in X and Y direction, so 2 increases the overall pixel-count by a factor of 4.
- the new OpenGL pipeline in addition has full support for GPU multisample antialiasing (MSAA) which offers very good results for a fairly low performance overhead compared to super-sampling
- splitted the video settings into the 'old' 2D based video settings menu and a new VR settings menu.
Also different registry entries are used to store the various settings like stereo mode, display, resolution, postprocessing etc. separately.
Things like Ball rendering and Day/Night cycle are used for both.
To configure VR, go to the new Preferences->VR Settings menu and (de-)select it in the upper left drop down menu.
If you have performance issues, try disabling things like Ambient Occlusion, Supersampling (=1), Postprocess AA & Sharpen, Reflections, and Bloom.
One can also select an additional VR Preview window that shows the VR rendering on the screen as Side-By-Side.
- when using VR, the near plane can be adjusted (in centimeters). It is like a wall in front of the player. Everything between the player and the near-
plane is invisible. It might be helpful if one wants to adjust visibility when moving or if one has changed the scaling too much. Having too small values for the near-plane will cause Z/depth-fighting rendering artifacts.
- scaling of the table is now possible within the VR settings. One can either set a factor (e.g. 1.1 increases the table size by 10%) or one can
scale all tables to a fixed width (in centimeters) to match a PinSim Controller. The scaling factor has no lower/upper limit (so yes,
one can scale up the table to play soccer ;) Or be attacked by a giant rolling Indy-Trap Or scale it down to matchbox car size If it gets
weird we warned you). If you have issues locating the table or getting nightmares, it is NOT our fault.
Default values are: box unchecked and 1.
- note that the VPVR fork did not support the roughness property of metallic parts (=always mirror like metal instead). Some VR-only tables thus feature wrong material shininess that will lead to
incorrect rendering of metal parts. These table's materials need to be updated to re-adjust the shininess of metal materials.
- note that adaptive vsync (=mode value 2) is recommended (at least) on macOS/iOS and Android
- added rudimentary support for BAM Headtracking (thanks to Rafal from ravarcade.pl). Usage:
It works almost the same way as with Arcade Pinball, but one doesn't have control over the table location.
1. The User needs a working Future Pinball installation with head tracking enabled (FP is just used to setup the head tracking, FP can then be closed).
2. Start BAM-Tracker.exe, select head tracking method, leave it running.
3. Run VPinballX (the OpenGL version)
https://www.youtube.com/watch?v=g-EpTp_3wKo
- completely revamped F11 (note that on macOS its F1)/ESC menu, including much more detailed live editing options of table elements
- the playfield is now processed like all the other parts, i.e. its not forced as static/preprocessed anymore, and thus underlying table elements will work as expected now (so no more under playfield clipping, and alpha blending is not limited to simple alpha clipping/cutouts anymore):
- if the 'playfield_mesh' primitive has 'Static rendering' disabled, it will be rendered with transparent parts (this results in the 'playfield_mesh' to be blended like plain primitives, so no more need for alpha test or insert overlays)
- parts under the playfield (like a lower playfield or 3D inserts) can have 'Static rendering' checked and can feature materials without the 'Active' checkbox (previously, under-playfield parts without these flags were clipped)
- the playfield texture can now be changed at runtime through the script (see CommandReference.txt)
- playfield reflections are now rendered using a 'reflection probe' instead of a 'fullscreen mirror overlay':
- performance may change a bit (better or worse) depending on the table and display configuration
- reflection settings are now unified between balls/playfield and the interactive camera/light editing mode (F6),
and were extended with new rendering modes:
- Disabled: *NEW* remove all reflections
- Balls Only: dynamic balls only
- Static Only: reflection of static parts only (no change)
- Static & Balls: reflection of static parts and dynamic balls (no change)
- Static & Unsynced Dynamic: *NEW* reflection of static parts and dynamic parts without depth buffer synchronisation. Overlapping of dynamic-over-static and of static-over-dynamic reflections is thus incorrect (features just a limited performance cost, added for lower end systems)
- Dynamic: *NEW* dynamic reflection of all parts. It provides the best results without any overlapping artefact at the cost of a little bit more performance (recommended)
- additional roughness parameter
- add support for preliminary refraction to primitives (using 'refraction probe's). This feature is still preliminary and will evolve in the coming updates.
- add refraction tint to the material parameters
- add native ball shadows for bulb lights, as well as to flashers & primitives that are used as lightmaps (using additive blending)
- reworked lights:
- now lights have a z coordinate (relative to the surface they are on) that is used for shadows and bulb rendering
- allow to hide light rendering (still allowing for ball reflections or shadows through primitives or flashers). This was only possible through scripting before
- allow the bulb mesh to work for both classic lights as well as bulb lights
- allow the reflection on ball to work for both classic lights as well as bulb lights
- add support for 'modulated' lights (through script only, corresponding to PWModulated outputs of most 1990+ pinballs)
- allow to select a fading behavior between linear (backwards compatible) / LED (no fading) / Incandescent (physical model of an incandescent bulb, including tinting when filament cool down)
- try to make the user interface more intuitive
- add support for more than one DMD (for original tables, in-game DMD menu,...)
- add new log file functionality (vpinball.log), with script and error information. It can be en/disabled in the UI/Editor preferences.
The ability to do a rough performance profiling of the table loading phase by using the 'Profile.txt' has thus been removed in favor of the new logging
(all the profile events will be in the log file with timestamps)
- the settings are now stored in a file named 'VPinballX.ini' located in the standard Windows location for application data: %AppData%/VPinballX/
(optionally this can be changed in the INI/Editor/UI preferences to be located in the same folder as the executable)
This file will be automatically created and initialized from existing settings if found in Windows registry. This change was made to:
- allow per table settings,
- allow easier edition (manually or by a third party application),
- allow to use different settings by specifying a custom ini file on the command line for the app or table settings (see CommandLineParameters.txt),
- settings are the same and can be shared between Windows version of VPX and the standalone version (Linux, Mac, Android, iOS, Raspberry,...),
- allow to see all the available settings at once (not so easy before, since there are a few hundreds of them),
- allow easier collaboration by being able to share the setting file with bug reports.
If a file with the exact same name as the one of the table file but with '.ini' extension is found along the table file, it will be used as a settings override for that table.
- settings were also extended to support overriding some table properties, like camera properties or other things that used to be adjusted in the 'User' property pane. This change allows to
adjust a table to user preferences without modifying the table. Only the table settings (the ini file along the table) will be adjusted. This way:
- updating a table to a new version can be done more easily, by simply renaming the ini file to the new table name, keeping all adjusted settings,
- all properties and settings use the same approach: load data from the table, optionally overriden in the app ini settings, optionally overriden in the table ini settings,
- POV files are not needed anymore and therefore deprecated (these are still read and used, unless an ini file has been created, for backwards compatibility).
- some settings were moved/changed to benefit from the new settings system:
- Player/GlobalDifficulty is now TableOverride/Difficulty, expressed as a decimal value
- Playfield & Ball reflection on/off were removed from the table settings, since this was redundant and conflicting with overall application and reflection probes settings. We now directly
define reflections in the render probe. Table authors can disable the default playfield reflection by setting PF reflection strength to 0. Players use the app/table settings to tweak in addition.
- the camera mode was replaced by a user setting 'tweak' mode which allows to edit the point of view like before, but also adjust table settings.
This mode will not modify the table like it used to do, but only adjust the settings (in table's ini file). The settings are only saved when the credit key is pressed.
This mode can be started from the ui, from the commandline, or entered while playing using the (new) dedicated key shortcut.
Tables can declare custom options from the script that will be presented to the player in this mode (see script reference). For example:
Sub Table1_OptionEvent(ByVal eventId)
Dim mod1: mod1 = Table1.Option("Option", 1, 4, 1, 1, 0, Array("Option 1", "Option 2", "Option 3", "Option 4"))
Dim mod2: mod2 = Table1.Option("Percent", 0, 1, 0.01, 0.5, 1)
' Adjust table according to the value of 'mod1' and 'mod2'. Note that mod1 is a value between 1 and 4. mod2 is a value between 0 and 1 (displayed as a percent in the UI).
End Sub
Tweak mode also allows to view information and rules from the table. 'Rules' supports a limited markdown syntax allowing for headers, horizontal rule, lists and images (for example rule card).
- remove Anti-Aliasing and Postprocessed Anti-Aliasing options from the table properties (and use an .ini based override instead)
- the application is now fully 'DPI aware'. This means that one can use multiple monitors at different DPI settings.
This may require to adjust the position of windows on existing installs.
- add 2 new camera layout modes which work better for cabinets, and for anaglyph stereo (as well as other use cases) and allows:
- to setup the player position in real word units, measuring from the bottom center of the playfield in centimeters. This should allow to have a single position corresponding to your size and play position for all your tables.
- to setup the camera like a 'real' camera: there is no more layback but a view offset, the other properties being simply the inclination and the field of view.
- for camera mode, adjust the user interface to show this information and allow to easily reset to a default position by pressing the plunger key.
- support a new 'window' mode, designed for pincab users, where the screen is not orthogonal to the viewer, requiring an adjusted projection.
- change camera mode buttons to match the ones when starting VPX with -povedit (Start = Export POV, Credit = Reset/Quit, Plunger = Defaults)
- change view mode selection settings, you can choose between:
- Desktop & FSS: automatically selects one of the 2 depending if the table has enabled FSS (because it includes a backglass)
- Cabinet: use the cabinet view setup (also named 'Fullscreen')
- Desktop: use the desktop view setup (never use the FSS settings, even for tables including a backglass)
The UI also allows table authors to quickly switch between these mode from the camera property pane.
- stereo rendering has been rewritten:
- use new projections which are well-designed for stereo rendering (same as for VR, no more parallel or toe-in with artefacts)
- compute exact depth information when using the new 'window' POV mode (note that you should have the same X/Y/Z scene scale to get good results)
- add support for fake stereo to OpenGL (like DirectX): real stereo is way better but needs a more powerful setup
- add 'Luminance' filter mode which creates anaglyph based on real display/glasses/viewer calibration. The calibration is only possible from the new Live Editor.
This new mode adapts to any glasses based on user calibration. It is especially useful when glasses are not conforming standard filter colors, on HDR display or
for (partially) color blinded people. The calibration is performed from the new 'Live Editor' in the Live Editor > Preferences > Video Settings dialog. It consists
of measuring the perceived luminance of your display through your glasses and eyes. To do so, the viewer adjusts the luminance of a reference image showing 2 faces
until it finds the point where the most prominent faces change sides.
- Additionally to toggling stereo on/off, F10 shortcut also circles through the anaglyph glasses settings, Flipper Key + F10 circles backward
- add complete support for anaglyph amber/blue & blue/amber glasses
- allow to adjust image brightness and per eye contrast
- add all stereo settings to the Live Editor to get live feedback (in the Live Editor > Preferences > Video Settings dialog)
Note that the DirectX flavor of VPX does not support real stereo rendering. The OpenGL flavor should be preferred when using stereo (at the cost of some performance requirements)
- the ball texture can now be set as either a spherical map (the default, like it used to be before 10.8), or as an equirectangular map. Equirectangular maps
are also used already for the environment lighting. The benefit of using them is that the reflections are view dependent and that they can match
the table environment lighting image for full consistency between the lighting and reflections.
- the ball is now shaded using the previous frame for computing the reflections of the playfield on the ball. This allows to have correct reflections of the playfield on balls
when using a playfield_mesh, to reflect the inserts and all the full shading/lighting applied (so no more need to enable ball reflections for insert lights unless you want some extra reflected light).
- new 'Force round ball' option in the video preferences to replace the old, manual anti-stretch parameters
- timers with a -1 interval used to be ran 1 or 2 times per frame (depending on user latency reduction setting). They now are always ran once per frame only.
timers with a -2 interval are now considered as controller sync timers and will be ran as many time per frame as needed, depending on user settings.
- a new folder named 'Cache' was added to VPX's main directory for caching data to improve performance. For the time being, it is used to store the list of textures which are used
by each table during play. This allows for preloading of the needed textures when a table is started, limiting stutters during play.
- add an option to primitives to toggle 'depth masking', which is otherwise used during rendering to hide all parts behind the primitive. If unchecked, the primitive will not hide parts behind it and it will also not be visible to ambient occlusion.
For example, this is needed to employ primitives to render user/fake shadows without breaking ambient occlusion, or for transparents part with self overlapping parts like plastic ramps.
- as the script is initially started, the Init events are now called *before* the static parts are prerendered.
This allows a table script to adjust the properties of static parts during startup.
- video synchronization and target frame rate are now 2 separate settings and a new video synchronization mode for low latency input/physics/rendering has been added. The choices are:
- None: no synchronization, VPX just runs as fast as possible. Unless when playing on a very powerful system, this should lead to some input latency (due to lack of input syncing) and render latency
(due to flooding the GPU frame queue). This setting used to be 'Adaptive Sync: 0'
- VSync: synchronize on the display vertical blank signal. This can limit stutters and avoids tearing, but will lead to high input latency. This used to be mode 'Adaptive Sync: 1'
- Adaptive VSync: same as 'VSync', but when a frame is late (=missing the refresh rate), it is displayed immediately. This should reduce stutters but features the same input latency.
The DirectX 9 version uses software synchronization, while OpenGL uses hardware (driver) synchronization which should give slightly better results. This used to be mode 'Adaptive Sync: 2'
- Frame Pacing: *NEW* VPX will try to run the input & physics simulation continuously in real time instead of only once per frame. This lowers the input latency, especially if the
computer is powerful enough to run at the monitor refresh rate. This also allows to have the input synchronized to PinMAME when enabling it, fixing some synchronization bugs like in
seen in video modes with fast button presses (Lethal Weapon, Black Rose,...).
Due to these changes, the target frame rate is now a separate setting. If defined, it will lead VPX to perform its own synchronization, trying to achieve the requested frame rate.
The synchronization settings still apply. Therefore, selecting a frame rate that is higher than the monitor refresh rate requires the use of the 'None' synchronization mode!
- additive blended primitives are now rendered 'unshaded', so without any material/lighting applied (same as flashers), this is more natural and allows for some performance optimizations
- add staged left/right flipper key configuration to the preferences
- when renaming a surface/wall, ask if all elements (lights, etc) that reference the surface name should also use this new name
- it is now possible to choose between 3 tonemappers (the part of the rendering which handles the way overbright parts are displayed on non-HDR displays):
- Reinhard, which is the one used by VPX until the 10.8 release,
- Tony McMapFace, which is an improved tonemapper especially regarding handling very bright saturated colors (like a very bright red, which in turns would be perceived as yellow or even white. See https://github.com/h3r2tic/tony-mc-mapface)
- Filmic curve, which is common e.g. in modern games
- the full table can now be locked to prevent unintended user changes (can be changed anytime)
- one can now export a 'tournament score' file via the pause menu (or when keeping the Lockbar-key pressed and then pressing the Start-key, too)
if playing in the new 'locked' mode, and also not having any unsaved table changes.
This is currently limited to PinMAME-emulated machines, and the script HAS to enforce a connection to the DMD or alpha-segments display via 'UseVPMDMD = True'
(if its an emulated DMD machine, 'UseVPMColoredDMD = True' will also work), thus the file contains the encoded content of the display at that point in time.
The content of this text file can then be posted to the tournament administrators and converted by them via the '-TournamentFile tablename textfilename' command line option to a .png again.
Note that the VPX version used to play AND to convert must exactly match (incl. same revision/build, same OS, DXvsGL, 32vs64bit)
- add/correct more data to the dimensions database
Additional docs explaining all these new features with images are provided in the docs folder of the project: https://github.com/vpinball/vpinball/tree/master/docs
FIXES:
- timers with a -1 interval are always fired after physics and animation, but before rendering, allowing the script to update visual parts accordingly without any visual lag.
This also applies to the new 'Animate' event which is designed for this purpose.
- fix visible depth range evaluation, allowing to simplify VR settings and to edit large VR rooms within the LiveUI.
Note that loading pre-10.8 tables will take a bit longer (until they are saved again with 10.8) due to this, as these need to compute 3D-bounds for each part.
- fix analogue nudge not working for joysticks/gamepads in XInput mode
- implement support for mouse based left/center/right nudge
and cleaned up issue where flippers only worked with a respective fixed mouse button
- fix wrong keyboard characters in dialogs for non QWERTY keyboards
- fix saving of custom keys for joypad input
- fix some problems with playing sounds via BASS: pitch/frequency change and loop/restart should now be matching the 'old' player
- fix longstanding textbox font size bug
- reflections now work in the interactive camera/light editing mode (F6) as well
- fix overbrightness in F6 (interactive camera/light editing) mode
- fix noise on small-scaled DMDs (e.g. on FSS setups)
- fix longstanding bug in the bilateral CAS filter
- fix swapped red & blue channels when exporting from BMPs
- handle broken tables better and try to load as much as possible
- static element preprocessing is now done on the GPU (which leads to a faster VPX-player start)
- increase preprocessing sample rate for the static parts of the table
- cleanup Light Debugger dialog and fix 2nd color button
- improve script editing performance again
- improve mouse cursor hide/unhide in (windowed) fullscreen
- fix 'O'-key ball debugging
- fix crash if sound card(s) hardware/driver setup changed
- fix crash on tables with weird table info
- fix out of memory crashes (Video capture and Image Manager)
- fix wrong detection of alpha when loading BMPs stored in .vpx
- fix potential multi-threading screw-up when loading textures
- fix changing the timer settings not marking the table as dirty
- fix 'paste at' (and others) coordinates
- fix deleting of sub part included in a collection warning
- fix keyboard navigation in Material dialogue
- fix .bmp export in the Image Manager
- fix gate two-way flag import from VP9/8 .vpts
- improve UI scaling on high resolutions (e.g. 4K)
- update example tables with new raytraced ball shadows enabled and other new features
- add better wood texture
- update FreeImage library to latest 3.18.0 (custom build) (currently disabled)
- DirectX 8 port for input handling (currently disabled)
- see Changelog_Scripts.txt for the respective core script changes (version 3.60, 3.61)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
- see Scripts.txt for the actual usage and "documentation" of the scripts that come with VPX
VP 10.7.4 Changelog
------------------------
FEATURES:
- add native ball shadows for bulb lights
FIXES:
- fix analogue nudge not working for joysticks/gamepads in XInput mode
- fix wrong keyboard characters in dialogs for non QWERTY keyboards
- fix some problems with playing sounds via BASS: pitch/frequency change and loop/restart should now be matching the 'old' player
- fix longstanding textbox font size bug
- fix noise on small-scaled DMDs (e.g. on FSS setups)
- fix longstanding bug in the bilateral CAS filter
- fix swapped red & blue channels when exporting from BMPs
- fix Light Debugger dialog 2nd color button
- improve script editing performance again
- fix crash if sound card(s) hardware/driver setup changed
- fix crash on tables with weird table info
- fix out of memory crashes (Video capture and Image Manager)
- fix wrong detection of alpha when loading BMPs stored in .vpx
- fix potential multi-threading screw-up when loading textures
- fix saving of custom keys for joypad input
- fix changing the timer settings not marking the table as dirty
- fix 'paste at' (and others) coordinates
- fix deleting of sub part included in a collection warning
- fix .bmp export in the Image Manager
- fix gate two-way flag import from VP9/8 .vpts
- see Scripts.txt for the actual usage and "documentation" of the scripts that come with VPX
VP 10.7.3 Changelog
------------------------
FIXES:
- fix missing render updates when debugging/changing parameters in pause mode (10.7.0 regression)
- show bulb in UI/viewport
- fix potentially wrong primitive animation interpolation
- fix primitive animations getting stuck
- fix primitive animation speed being dependent on the framerate
- fix material list combobox not updating
- fix missing decal UI updates (e.g. width,height)
- fix loading of greyscale/8bit JPEGs (10.7.2 regression)
- fix crash when bumper skirt is not visible
- do not fail to load a table if only the hash/checksum fails, but instead just output a warning
- do not attempt to play "<None>" reel sound (which otherwise polluted the debug outputs)
- update BASS library to 2.4.17
- see Scripts.txt for the actual usage and "documentation" of the scripts that come with VPX
VP 10.7.2 Changelog
------------------------
FEATURES:
- add "Assign to Layer" context menu again by showing the first 20 layers.
- expose background and selection color in the script editor preferences
- add disable lighting option for balls (and their trails) to the video preferences (e.g. to help the visually handicapped)
- add 'Go To Definition' to the script editor (via F12 key), which allows to jump to the function/sub/variable definition from the current cursor pos/selection
- add more columns to the search/select dialog (Physics Material, Collection, Collidable, Visible, Timer enabled, Depth Bias, Static Rendering, Reflections enabled)
- fix mem size ordering (culture neutral) and add image format column to the image dialog
- add additive blending to primitives (same as flashers)
- support HDR textures on primitives (same as flashers), full high dynamic range is only available if lighting disabled though (otherwise clamped to 0..1)
- allow playfield mesh to optionally be not collidable (or a toy). In that case another collidable object must be added as the playfield. This allows to use different meshes for the physics and the visuals.
- add new command line parameter "-GLES [value]" which overrides the global emission scale (day/night setting, value range: 0.115..0.925)
- add new JP Physics recommendations (table, pdf, materials, script)
FIXES:
- improve very slow layer operations (open/close table, filter/unfilter)
- fix an issue when hiding all layers
- assigning an element to a hidden layer, the element will also be set to hidden.
- update line number for script subs/functions when updating the function list
(i.e. so that jumping to these works properly again after changing other script code)
- remove subs/functions from the function list when these are deleted during editing
- fix old VPX regression leading to wrong parent links for some of the script data (leading to all kinds of other side effects when parsing the script code)
- update internal script representation continuously while typing (please notify us if this makes working in the script editor too slow for a specific table!)
- implement simple duplicate test for subs/functions, and output these when script is brought into focus as a tooltip
- update image/texture drop down list after importing/deleting images
- fix (ignored) font size handling
- fix animation/fading of lights when not visible/when only visible through reflections
- fix crashes in Direct Sound when using certain WAVE_FORMAT_IEEE_FLOAT .wav samples
- fix missing image(s) due to main memory limit when using multithreaded loading
- fix bumper texture memory leak
- fix showing property dialog if multiple elements were selected
- fix tabbing with multiple selected drag points
- fix registry defaults load/save for EM-Reels
- fix extremely old problem with put_TimerEnabled (would only work 'most of the time')
- fix "Reflection Enabled" not saving/loading for Spinners
- avoid thrashing of the saved dock/window settings when running in minimized mode
- fix extremely old wire ramp issue (too many triangles created)
- fix Z/depth rendering artefacts in interactive camera/light editing mode (e.g. when launching the table with F6 or the respective menu entry)
- remove 32 entry limitation for collections in context menu
- on import/rename an image in the image manager also update the comboboxes to select the new image for selected elements
- do not poll XInput gamedevice/joypad/stick if its disconnected, otherwise there was a noticable overhead/slowdown
- decrease main memory usage for textures by using smaller texture formats where possible
- optimize floating point texture video memory usage/bandwidth (e.g. flasher/primitive and environment textures)
- improved full example table (thanks kiwi!)
- see Changelog_Scripts.txt for the respective core script changes (version 3.59)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
- see Scripts.txt for the actual usage and "documentation" of the scripts that come with VPX
- add Visual Studio 2022 support
VP 10.7.1 Changelog
------------------------
- internal release only
VP 10.7.0 Changelog
------------------------
FEATURES:
- reworked UI
o layer handling is now in a seperate window. Uncheck the checkbox to hide a complete layer or single elements
o support added to add unlimit amount of layers
o layers with no elements will be automaticaly deleted
o fast double-click a layer will select all elements of this layer and double-click one element will select it
o with a slow double-click on a layer or element let you rename it
o toolbar, properties and layers are now dockable windows without the need to restart VP
o add context menu item to assign selected elements to the current selected layer.
- to reset the position of the dockable windows in the editor, open Preference -> "Editor/UI Options..." and click on "Reset Window Possitons"
- when exporting/importing a POV file, the custom user settings per table are now also exported/imported
- when importing a primitive mesh, there is now a new option that prevents internal reordering/optimization of the data
- add support for loading VPP/physics settings automatically: One can define an extra VPP(.vpp) file for each table, named like the VPX file
Example: you have some custom VPP settings for the table "QBerts Quest (Gottlieb 1983).vpx". Save the VPP settings into the file
"QBerts Quest (Gottlieb 1983).vpp" and place it in the same directory as the VPX file. VPX will then also load the VPP settings
automatically when loading the "QBerts Quest (Gottlieb 1983).vpx" (in the editor/player).
Or if you like to have default VPP settings that are used for any other tables, save it as "autovpp.vpp"
- add MP3 and OGG support (via the BASS library) to the sound manager and the 'standard' sound commands
these new file types are now also saved directly into the VPX file, unlike the music commands (which still use the 'music' folder for legacy reasons)
Going forward, tables should only use the sound commands and not the music commands anymore (unless one needs to ship a music pack separately)
- add XInput (and for now disabled SDL) input APIs, selectable in the 'Keys, Nudge and DOF' preferences dialog
-> this means for example better support for XBOX controllers and (via additional driver software) PS controllers
- added (optional) Rumble effects when XInput or SDL input APIs are selected, can be disabled in the 'Keys, Nudge and DOF' preferences dialog
- add another 7.1 SurroundSound mode tuned for SSF cabinet configurations (7.1 Surround Sound Feedback (enhanced))
this exaggerates the positional feel of the playfield sound effects when
played in a cabinet with exciter pairs positioned at each end of the cabinet
- add WEBP to list of supported image formats
- add various anaglyph (e.g. red/cyan) 3D stereo glasses modes to the video preferences, also an additional left<->right flipped interlaced mode
- as with all 3D stereo modes, please note that turning off "Reflect Elements on Playfield", Ball motion trails and Ball shadows (if the table implements these) can help the perceived image quality
- also the same/known 'F10' key to turn on/off the 3D stereo rendering during gameplay works
- optimize table loading/pre-processing time
to reduce the amount of parallel CPU threads running, use the new command line parameter "-LessCPUthreads"
- optimize loading of JPG images in the table
- reduce temporary memory needed for images and automatically downscale textures if CPU memory is running out
- add table save date and revision to table info and also show this in the pause info/menu
- add new plunger option: Enable 1s retract
The plunger will move forth and back between the maximum and minimum position, allowing for a retry, if the desired firing position has been missed.
Useful for button/key plunging and should become your new default.
Note that some few tables may (ab)use a manual plunger for e.g. kickbacks and these can then be fixed by enabling the autoplunger checkbox for that element.
- add Inder/Playmatic trigger mesh
- make debug text/FPS output adapt to resolution and rotation
- first press of 'F11' will now show a minimalistic FPS-only text, then pressing it the next time will continue with the already known detailed statistics/profiling displays (as the latter had too much impact on the FPS itself)
- the script editor now works in UTF-8 mode and also saves it like that (note though that VBS itself may not digest all of UTF-8!)
- add post-processed sharpening filters to the video preferences: CAS (less aggressive, rather subtle) and Bilateral CAS (can effectively counter the general blur coming in from FXAA or SMAA, etc, while keeping the AA alone)
- improve quality and performance of internal DMD shader (especially visible on FSS tables)
- support to add custom notes to a table. To open a dockable notes dialog use the menu View -> Notes. Any text that was entered there is saved with the current active table.
- add ElasticityFalloff to the wall physics properties
- add Flashers and Primitives to Light sequencer collections
- ability to do a rough profiling of the table loading
if a file 'Profile.txt' exists in the same directory as VPX, then statistics for the loaded tables will be appended
- add a button to the video preferences that resets the (windowed mode) player window position
- add new command line parameter "-PovEdit [filename]" which loads and runs a table in camera mode, then exports a new pov on exit
- add new command line parameter "-ExtMinimized" to start VP in the 'invisible' minimized window mode, but with enabled Pause Menu
- add new command line parameter "-Primary" to force VP to render on the Primary/Pixel(0,0) Monitor
- add support for capturing any window content into a flasher texture (intended to be used with PUP content)
- be able to 'loop' the automatic loading/select-file dialog if this new setting is enabled in the editor preferences
(i.e. after having played a table and one exits, the table is unloaded and one can directly select the next one to play)
- retweak default saving filenames for Blueprint-images, .obj, .pov and .vpp: It's now copied from the table filename
- add 2 new tables to the 'File->New' menu: A completely empty table and a light sequencer demo table
FIXES:
- fix issues with 3D Audio setups and backglass sounds (like music)
- the Play Button in the Sound dialog now respects the volume/pan/fade values
- deleting an image will not copy the old alpha value over to the next image in the list anymore
- fix problems when exporting multiple sounds or images
- fix wrong bounceback direction of gate
- fix problem with gate animations introduced in 10.1 when the open/close script functions were used before
- fix issue where saving a table can cost up to 4x (8x on 64bit) the temporary memory
- fix issues when fallback search of core.vbs is triggered
- properly save recently opened directory for all kinds of dialogs
- fix crashes and not being able to select files with very long file names (e.g. images)
- fix hang on player exit on some setups
- do not mark table as dirty if just starting to play it (i.e. due to backup phase)
- replace dithering code with blue noise, fixes flickering patterns (especially in darker table areas)
- disable dithering code when running in 10bit output mode
- tweak AO (Ambient Occlusion) and SSR (Screen Space Reflections) to be a bit less noisy
- slightly tweak light transmission filter to capture a larger radius (for very bright lights)
- revamp bloom filter to capture a larger radius and to be more robust in general, incl. fixing slightly wrong offsets when downsampling
- fix a small error in the original SMAA filter code, and also increase quality parameters slightly (to match reshade)
- retweak Standard FXAA and Quality FXAA filters to be a bit sharper
- tweak minimum physics cycle time, which mainly influences kickers
also update default kicker physics (Hit height 0.35 and Hit accuracy 0.5)
- slightly optimize collision code, especially for dropped targets
- fix slightly wrong flipper mesh (visible for very short flippers)
- extend light blinking patterns from size 32 to 'unlimited'
- fix some broken insert lights if playfield reflections are disabled
- fix OBJ-exported names for all ramp types
- fix missing wire thickness for triggers on OBJ export
- fix crash on (at least) one pre-forsyth-mesh-reorder table
- fix crash on loading older tables with too long collection names
- fix crash on loading older tables with too long item names (now its also prevented to create these)
- fix hangs on loading/playing older tables due to invalid shapes
- in general be more robust against invalid/'too long' names
- add many more different windowed mode resolutions
- more robustly handle display resolutions that are greater FullHD(1920x1080)
- fix various issues (wrong resolution selected, etc) in the resolution selection list
- also search for table-script replacements (i.e. external .vbs with the same/table name) in the "Scripts" folder to match the core script behavior
- when modifying the table-script, check if it was loaded from an external .vbs, and if yes, then save the modifications to that file (and only optionally to the .vpx table itself)
- delete duplicate images and sounds (same filename/path in the Sound/Image Manager) and remove dead image/material/surface links from items (i.e. if that thingie's name does not exist anymore)
- when using save-as for table saving, go to the same folder and prefill dialog using the same name as the current table
- fix crash when importing older .vpp files in the physics import
- import min & max slope, too, when importing a .vpp file directly in a table
- when setting up the defaults for low- or high-end PCs in the video preferences via the respective buttons, ignore settings that do not influence performance like display, FS mode, etc
- make debug dialog (and its text edit) resizable
- improved script error messages and handling
o there is a new dialog when you get a script error, showing a stack trace of where the error came from, as well as local variables and function arguments at each point in the stack
o a script debugger needs to be installed to get this more detailed error information
o installing Visual Studio 2010 Isolated Shell seems to work
o this information is saved when you quit gameplay, and can be shown from "Script > Toggle error log" in the script editor
o compile errors are now also shown in this log, instead of popping up a dialog box
o further, runtime errors can be suppressed from showing a dialog box for the current play session, which can be useful if you keep getting errors on a timer
- fix an issue where the light sequencer could become stuck
- any light sequencer TailLength value higher than 0 will now 'Reverse', i.e. the lights will turn 'off/on' instead of default 'on/off'
- tweak flipper shadows (via script) implementation in the example/blank table
- update BASS library to 2.4.16
- script editor updated to use scintilla library 4.4.4 (custom build)
- see Changelog_Scripts.txt for the respective core script changes (version 3.58)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
- see Scripts.txt for the actual usage and "documentation" of the scripts that come with VPX
- add Clang (via Visual Studio 2019) support, still has a linking prob with 32bit though
VP 10.6.2 Changelog
------------------------
- add another 7.1 SurroundSound mode tuned for SSF cabinet configurations (7.1 Surround Sound Feedback (enhanced))
this exaggerates the positional feel of the playfield sound effects when
played in a cabinet with exciter pairs positioned at each end of the cabinet
- improve quality and performance of internal DMD shader (especially visible on FSS tables)
- replace dithering code with blue noise, fixes flickering patterns (especially in darker table areas)
- disable dithering code when running in 10bit output mode
- tweak AO (Ambient Occlusion) and SSR (Screen Space Reflections) to be a bit less noisy
- fix a small error in the original SMAA filter code, and also increase quality parameters slightly (to match reshade)
- retweak Standard FXAA and Quality FXAA filters to be a bit sharper
VP 10.6.1 Changelog
------------------------
- fix hang on player exit on some setups
VP 10.6.0 Changelog
------------------------
FEATURES:
- add support for using a primitive as playfield instead of the build-in one:
o to create a mesh playfield create a new blank table and export it as obj file
o open the obj file in Blender and edit the playfield mesh (mesh name is "Table1")
o cut holes into the playfield where you want to place kickers, VUKs and so on
o export the modified playfield mesh as a separate obj file and import it to VPX
o in VPX rename the playfield primitive to "playfield_mesh"
o the playfield primitive doesn't need an image and a material assigned
VPX will use the texture and material from the playfield properties, but will respect the 'disable lighting' parameter from the primitive
Note: VP can only handle a simple mesh plate (with optional holes) as a playfield. Adding other complicated meshes to the playfield (e.g. merge kicker meshes with the playfield) is not supported.
The "playfield_mesh" is also handled as a special primitive type: its physics settings are copied from the table physics properties, but in addition you can also set "Has Hit Event" and set a "Hit Threshold"
if you want to be informed that the ball has hit the playfield. Settings like "Toy", "Collidable" or "Overwrite Material Settings" won't work for the "playfield_mesh".
See example table (File -> New -> Example Table) how to use it.
- add object space-normal mapping support to primitive (our implementation matches the object space, +X +Y +Z, export/baking settings in Blender)
Object space-normal maps are commonly used if one reduces polygon counts of a complex model. The lost geometric details are then added back via a normal map
- add proper dithering to final output buffer (most noticable on gradients and/or low-quality/cheaper output monitors)
- implement proper sRGB pipeline for runtime filtering (only for images/textures that are used in the 'standard' material)
- increase static table elements precomputation samples from 32 to 64 and in addition do not do aniso/trilinear filtering there, but rely on the oversampling and bilerp instead, leading to much crisper textures
- add display selection in the video preferences
- add buttons to video preferences to easily setup defaults for low- or high-end PCs
- add 'Force Bloom Filter off' to video preferences to increase performance on extremely low-end graphics cards (like on tablets)
- add checkbox to 'user customizations'->'overwrite physics by global set' to optionally change all flipper settings, too
- add strength parameter for the (optional) legacy/VP9-like keyboard nudging code, can be set in the 'Keys, Nudge and DOF' preferences dialog
- add a circle outline to the gate element to help in selecting a gate in the editor and fix selection view, too
- add a rectangle outline to the spinner element to help in selecting it in the editor and fix selection view, too
- show kicker (default) orientation in the editor
- add support for showing the image of a primitive mesh in the editor. However this feature is far from perfect because Windows GDI (which draws the elements in the editor) can't handle meshes well
- show amount of vertices/polygons for a mesh primitive in the status bar
- add x/y scale support to the camera mode to scale x/y axis at the same time
- support 'Add Point' hotkey (F10 normal and F11 for smooth point) for rubbers
- add apply button to the dimensions manager to apply the selected dimension to the active table
- add support for up to 9 custom start parameters (range 1-9). Usage: "VPinballX.exe -c1 param1 -c2 param2" sets two custom parameters "param1" and "param2".
To access these in the script use: GetCustomParam(1) to get "param1" and GetCustomParam(2) to get "param2"
- new table-script manipulation features:
'-extractvbs' parameter: "VPinballX.exe -extractvbs tablename.vpx" extracts the script and exits
VPX will automatically replace the table-script with a vbs file named the same as the table file (similar to the existing pov file functionality)
- add checkbox to sound- and image-manager to use internal name as filename for exporting
- re-use existing sound settings if re-importing a sound file
- allow to export blueprints in different image formats
- add current active ball velocity/angular velocity, and the number of physics iterations per frame to the F11 debug output/stats
- add rothbauerw's and cyberpez' ball dropping sound code to builtin example tables
FIXES:
- fix lighting of the reflection of the playfield on the ball (before it was more or less ignoring the real lightsources and using a wrong lookup from the environment)
- fix some issues with the physically based lighting calculations, this can change the brightness (most noticably on the playfield) for some tables (more so if the (HDR) environment map is very high contrast, especially on the poles)
- fix normal computations of the old legacy primitive (i.e. that triangulated tube)
- fix ball decal splotches if only a global ball image was set in the video preferences
- fix some regressions (introduced with 10.5) with backdrop lights (most prominent: bulb lights had wrong falloff, the 'classic' lights wrong image mapping)
as a bonus, this should also finally fix all issues seen with backdrop lights on intel/builtin graphics in the past
- disable transmit for backdrop bulb lights
- fix ball through bumper issue
- fix rather old bug in physics-settings-per-material for the collidable setting of walls (introduced with 10.2)
- fix "all sounds to rear channels" bug
- fix FPS-dependent animation speed if update interval of EM Reels and Light Sequence is chosen low (i.e. quick changes) and animate at the actual speed
- do not ignore primitive setting 'Has Hit Event' anymore (before it was always implicitly on)
- fix some regressions from 10.3+ within the physics options dialog, especially with some of its flipper settings and when importing settings
- fix some potential crashes and quirks in the manager dialogs (most notably the alpha test value in the image manager being copied to other elements when deleting an image)
- fix crash in collection manager if a collection is moved up/down
- fix crashes if a POV file is broken/invalid
- add missing implementation for -pov command line option
- support both winding orders for lights, which fixes the invalid shape error message for (some) lights
- fix some potential problems with balls and rubbers outside of the playfield range, and when importing certain primitive meshes via .obj
ELSE:
- optimize .obj importer
- increase robustness (and reduce temporary memory used) when handling very large images/textures
- remove caption and window borders in windowed mode (only re-enable/toggle that caption if the 'ESC'/Pause-menu is brought up so that one can move the window around after unpausing again)
- save position of the windowed mode player window
- remove all table encryption, old locked tables automatically unlock now
- update BASS library to 2.4.14
- see core scripts (header of core.vbs) for the respective changelog (version 3.57)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
- remove Visual Studio 2010 & 2012 & 2013 support, add Visual Studio 2019 support
VP 10.5.0 Changelog
------------------------
- add ScreenSpace Reflections to the global video and table user properties, strength can be changed in the table lighting panel
This adds very fake, but also very fast local reflection effects to all table elements
- make exclusive fullscreen the new default when using Windows 10 build 1803 and above
- add option to the global video preferences to disable reflections of dynamic elements on the playfield (to help lower end PC systems)
- static table elements are now over-sampled/better anti-aliased and always rendered at highest detail level (latter only applicable for rubbers and ramps)
- improve quality of internal DMD shader, now it's almost resolution independent, especially when using it via flashers (e.g. FSS tables and the like)
- fix issue with optimized dynamic group rendering of primitives, in general note that
1. if all elements in a group are dynamic primitives/meshes and all these use the same texture and same material, they will be grouped into
one big render buffer/single render call to speed up the rendering of transparent meshes on the table (like the plastics for example)
2. if elements are grouped together they will be treated as a group in the editor. Click on it and all elements in that group are selected at once
3. if you group primitives you can't animate or move/rotate them dynamically via script!
- throw balls in player: add support to change the default ball mass when throwing a ball. The user can also set the default ball mass in the editor options (menu: preferences)
- built-in ball control: Enable in debug window (or via "ball control always on" in the global options)
- left mouse click directs the ball towards the mouse cursor, left flipper key releases control
- can also double click to make the active ball jump to the cursor
- can hold left mouse button down to guide the ball
- if "throw" and "ball control" are both checked, one can use the throwing action on the ball control instead of making a new ball
- increase usable UI layers from 8 to 11
- script button can now both open and close the script editor
- optionally make View->Script always show the script (see new option in Preferences->Editor Options)
- add copy/paste feature for control points. Select a control point, press the "Copy" button or CTRL+C to copy the coordinates.
Then select another control point of another element and press the "Paste" button or leave the mouse cursor over the control point and press CTRL+V.
ATTENTION: you can also copy/paste control points of the same element but this can lead to bad shapes of the selected element
- add units conversion feature from VPUnits -> inches/millimeters in the status bar for control points.
If you select two control points of a wall/ramp the status bar shows the distance of X/Y in the selected unit.
The unit used for the conversion can be set in the editor options dialog.
- make the Edit->Search/Select Element un-minimize if minimized when selected
- fix detection of used materials (bumpers, triggers & kickers were missing) and used images (color grading LUT was missing)
- fix sound device selection/mapping for music (i.e. usually the backglass device)
- add 'Set Defaults' button to the editor properties to reset editor changes and position/size of the script window
- configurable global flipper physics sets: setting a negative value for a flipper physics setting in there will ignore that value and use the respective table flipper value instead
- fix immediate player shutdown if global physics sets not setup/initialized by the user in the global options
- fix wrong initialization order for global physics sets, leading to uninitialized physics parameters on the first run of a table (including potential crashes due to strange values)
- fix EOS Torque and EOS Torque Angle not overriding the table flipper settings when used via the global (flipper) physics sets
- rubbers now fully respect the element detail level slider, plus their hit shapes feature less triangles (=faster physics/collisions)
- fix rubber triangulation issue leading to visual artifacts (especially in the editor) and rarely also weird physics behavior
- fix ramp collision/internal walls reaching below and above the actual visible walls or wires, which was mainly an issue for rather straight and/or very steep ramps
- improve gate swing physics, correct backwards initial swing, and expose new gravity factor parameter.
Also add some "bounce back" for 1-way gates. Currently set up to use as-is defaults, but Wrd1972 recommends the following settings:
Ideal setting for GATE motion:
Elasticity = .4 (default)
Friction = .02 (default)
Dampening = .85
Gravity = 3
Ideal for SWITCH ACTUATOR motion:
Elasticity = .4 (default)
Friction = .02 (default)
Dampening = .9
Gravity = 1
- animate bumper skirts depending on ball impact
- add RingDropOffset to the bumper element
- fix rendering of bumper base/skirt if ring is disabled
- update bumper base, ring and skirt with better meshes provided by flupper1
- allow reels and textboxes to be moved via the script (and textboxes can also be placed at floating point precision level)
- add 'Disable Lighting from below' functionality for Targets and Walls (0..1) to optionally disable light coming from below (e.g. from light elements)
- handle corner case if a timer is disabled and then re-enabled within its own handler to prevent falsifying the timer interval
- fix flipper element's EOS Torque and EOS Torque Angle and Elasticity and ElasticityFalloff and RampUp to be able to be changed by the script
- draw also flipper thickness in the editor
- fix triggers getting "stuck" when the ball is moving fast
- fix kicker export bug
- update builtin tables with 3 different sling arms (thanks bord and BorgDog)
- fix obscure bug where starting the blank/built-in tables with the options pane closed causes the ball to levitate off the table
- allow ESC-key to resume table if pause dialog is up
- add -EnableTrueFullscreen (force enables/overrides the true fullscreen video preference) to command line
- improve table exit performance (particularly when using Windows 10 build 1803)
- log message in debug window when PlaySound is called for a sound that's missing in the sound manager
- add VPTableStart broadcast message for frontends as notification that playfield should be shown
- update BASS library to 2.4.13.8
- see core scripts (header of core.vbs) for the respective changelog (version 3.56)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
VP 10.4.0 Changelog
------------------------
- add support for loading POV/backdrop settings automatically: One can define an extra POV(.pov) file for each table, named like the VPX file.
Example: you have some custom POV settings for the table "QBerts Quest (Gottlieb 1983).vpx". Save the POV settings into the file
"QBerts Quest (Gottlieb 1983).pov" and place it in the same directory as the VPX file. VPX will then also load the POV settings
automatically when loading the "QBerts Quest (Gottlieb 1983).vpx" (in the editor/player).
Or if you like to have default POV settings that are used for any other tables, save it as "autopov.pov".
- in addition, there is also -Pov [filename] to load, export POV settings and then close VPX (via the command line)
- change context menu behavior of add/remove to collection: it's now possible to add/remove one or multiple elements to other collections.
If you selected multiple elements but they are not part of the same collection/or are not part of any collection
the context menu is greyed out and the check marks tell you which collections were found for these selected elements.
- add Rotate/Scale around origin option to the rotate/scale dialog.
Simply uncheck "Rotate around origin" or "Scale around origin" to rotate/scale around the mouse position.
To use the current mouse position as rotate/scale reference use the following workflow:
1) select the element you want to rotate/scale
2) place the mouse cursor where the origin should be
3) press the context menu key on your keyboard (the one between "Alt Gr" and right "Ctrl") and select "Rotate" or "Scale"
4) uncheck the "Rotate/Scale around origin" and start the operation
- a selected element can be added/removed to/from a collection via the context menu
- add a new "In Use" column to the material manager dialog
- add a new column for the image manager to show the raw size in bytes for each image
- let user change the scatter angle for bumpers in the editor UI
- add additional thickness parameter to (transparent) materials,
which interacts with the standard amount (and/or alpha channel of the image) and edge opacity to provide a more natural look
- add (optional) legacy/VP9-like keyboard nudging code, can be enabled in the 'Keys, Nudge and DOF' preferences dialog
- add internal/rudimentary GPU & table element profiling functionality (accessed as usual via the F11 statistics/debug info display variants)
the normal statistics/debug info display now features multiple modes, the first mode works as before,
the second features additional timings for each main rendering block (like timings for Ambient Occlusion, pure rendering of the table elements, playfield reflection, etc),
the third one shows separate timings for each table element type(s), which is only approximate though, as it can not render the table in exactly the same way
- extend 'Disable Lighting' functionality for HitTarget, Primitive and Wall from simple dis/enable to a blend value 0..1
- add 'Disable Lighting from below' functionality for Primitives (0..1) to optionally disable light coming from below (e.g. from light elements)
- add new kicker meshes (KickerCup2, KickerWilliams, KickerGottlieb)
- add surround sound options/configurations:
1) Basic 2CH audio - this should operate exactly as it did before. Forward/rear panning is ignored.
2) All effects to rear - Moves the table sounds to the back audio channels. This allows one to move the sounds into the cab like one was able before, but without needing a second sound card.
3) Surround, front is front - This is the best setting when using a dedicated card for the surround sound table sounds. It makes the front channels the front of the cab (closest to the player). This way if one uses older versions of VP, the old legacy output still works well.
4) Surround, front is rear - This is a pretty "vanilla" surround setup. If you were to play on a home theater or with virtual 3D headphones, it's the most appropriate. The "front" speakers are in the rear of the cab (furthest from you). If VPinmame also uses the same soundcard, it will share the audio with these front channels.
5) 7.1 surround (aka 6ch audio) - If one wants to drive the backglass, and 4 channel table sounds all off of one card, this is the setting to use. It shifts all of the table audio to the side and rear channels, leaving the fronts available for VPM and backglass sounds. This might also be a good setting to try if you are using just 2 speakers in the cab and 2 in the backbox, the table sounds will pan partially towards the front in 4 speaker mode, letting the backbox provide some of the surround effect.
Please note that these modes are used in conjunction with the Windows speaker configurations. You can use any mode on any speaker system.
Some sound cards even have virtual surround options that would work with this setup. You could set up a full 7.1 setup and dedicate it to just the playfield if you wanted with option #3 or #4, and use a separate card for VPM.
The 7.1 mode was tested and it works great, but we recommend using the #3 option for now(!) as it is the most backwards compatible when also using VP9.X and VP9.X/PhysMod5.
There's also a much revamped sound manager that lets you tweak the positions without touching the table script.
- add tweaked ball rolling/collision PlaySound calls to the default table, to use the new surround/front_rear_fade parameter
- extend all other PlaySound calls of the default table to use the respective elements X and Y position (on the table) for panning and front/rear fading
- extend some PlaySound calls with DOF/Controller.vbs commands
- new table extended by an additional stripped down version of the default table and an updated example table (Thanks to BorgDog and Hauntfreaks)
- add nudge test and calibration table (by DJRobX, modded by Sir Cheddar) to tables directory
- stop playing sounds when exiting the sound dialog, or exiting position dialog, or when you pick a different sound
- remove rendering of lower playfield border/quad
- fix missing kicker holes at inclination values close around 0
- drop target hit event problems fixed
- fix duplicated functions in the script editor dropdown box (which also resulted in a lot of slowdown over time)
- fix some uninitialized dialog state
- fix some more editor crashes
- see core scripts (header of core.vbs) for the respective changelog (versions 3.54 and 3.55)
- see CommandReference.txt for the changelog of all the scripting properties/interface changes
VP 10.3.1 Changelog
------------------------
- fix some editor crashes
- fix UI rendering of alpha images on Windows XP
- in interactive camera/light editing mode (e.g. launch table with F6 or the respective menu entry) navigating around the table with the arrow keys (and left alt key)
must now be explicitly enabled in the key preferences dialog
- add Randr's rulers, plus a simple protractor and Rothbauerw's manual ball control script (slightly tweaked) to the default table
VP 10.3.0 Changelog
------------------------
- add new material option for the glossy color: 'Use Image', which allows to configure how much the (optional) image that is attached
to a scene element is allowed to influence the glossy part of the material (0=no tinting at all from the image, up to 1=same behavior as before/older VPX versions)
- fix 'edge shadowing' issue if a normal map image is used for a scene element
- add new configurable in-game key for a lockbar/fire button (accessible via "LockbarKey" in the script)
- in interactive camera/light editing mode (e.g. launch table with F6 or the respective menu entry):
- press the start game key (default is 1) to reset the camera and all backdrop settings (inclination, layback...)
- add camera rotation around Y axis
- navigating around the table with the arrow keys (and left alt key) is now possible
- show camera position
- add additional parameter to primitives to allow for rendering backface triangles (if the used material features transparency)
- add simple kicker hole mesh
- change "AntiFriction" parameter to "Damping" for the gate and spinner elements (which also changes the input range from 0..100 to 0..1, and is inverse to before, e.g. Damping="1-AntiFriction/100")
(old tables will still load/save exactly the same though, as it was always used like this internally anyway)
- add (optional) missing hit event to ramps
- add missing Timer properties for ramps
- VP now supports three different view modes (DESKTOP, FULLSCREEN and FULL_SINGLE_SCREEN (to be able to easily add an additional backglass to the table)). The UI was changed to select, view and change these properties via a drop down list
- add more window resolutions to the video preferences (for new FSS/portrait setups)
- using the built-in DMD (via the flasher element) now in addition will respect the 'Additive Blend' and 'Modulate' parameters to steer the blending with the table
(this can for example be used to simulate a reflection on the playfield glass: set 'Modulate' to 0.9 and check 'Additive Blend' as an example)
(note that this unfortunately can break old tables as this setting was still ignored in 10.2.X, so all tables that use a built-in DMD via the flasher element should please be re-released with these two parameters set up correctly)