Commit Graph
92 Commits
Author SHA1 Message Date
metalgearslothandGitHub d02d186a2f Fix light pop-in 2 (#1798)
* Fix light pop-in

Doh

* Uniqueness

* Refactor to be less bad

* Better perf

* Fix perf problems

* Hide debug commands under preprocessor

Can't imagine anyone using this during live-game.

* CVars
2021-06-29 22:29:47 +10:00
metalgearslothandGitHub 66117e35ba Don't store lights in rendertree if not enabled (#1803) 2021-06-09 01:37:40 +02:00
Galactic ChimpandGitHub 8e0a26073d #1765 - replaced 3 try-catch clauses with if-else clause + VS autoformat of affected files (#1796) 2021-05-31 22:49:23 +02:00
Pieter-Jan BriersandGitHub 8efffc471d Multi-window support (#1713) 2021-05-02 14:05:50 +02:00
c4946b8466 Viewport Improvements (#1528)
Co-authored-by: 20kdc <asdd2808@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2021-04-19 09:47:20 +02:00
metalgearslothandGitHub 6cf5fdc5d6 Grid-trees for rendering (#1666) 2021-04-02 20:25:16 +11:00
Pieter-Jan Briers 9a19a774fa Use stencil test to cull FOV-hidden lights early.
Massive shader optimization.
2021-03-17 13:16:47 +01:00
80f9f24243 Serialization v3 aka constant suffering (#1606)
* oops

* fixes serialization il

* copytest

* typo & misc fixes

* 139 moment

* boxing

* mesa dum

* stuff

* goodbye bad friend

* last commit before the big (4) rewrite

* adds datanodes

* kills yamlobjserializer in favor of the new system

* adds more serializers, actually implements them & removes most of the last of the old system

* changed yamlfieldattribute namespace

* adds back iselfserialize

* refactors consts&flags

* renames everything to data(field/definition)

* adds afterserialization

* help

* dataclassgen

* fuggen help me mannen

* Fix most errors on content

* Fix engine errors except map loader

* maploader & misc fix

* misc fixes

* thing

* help

* refactors datanodes

* help me mannen

* Separate ITypeSerializer into reader and writer

* Convert all type serializers

* priority

* adds alot

* il fixes

* adds robustgen

* argh

* adds array & enum serialization

* fixes dataclasses

* adds vec2i / misc fixes

* fixes inheritance

* a very notcursed todo

* fixes some custom dataclasses

* push dis

* Remove data classes

* boutta box

* yes

* Add angle and regex serializer tests

* Make TypeSerializerTest abstract

* sets up ioc etc

* remove pushinheritance

* fixes

* Merge fixes, fix yaml hot reloading

* General fixes2

* Make enum serialization ignore case

* Fix the tag not being copied in data nodes

* Fix not properly serializing flag enums

* Fix component serialization on startup

* Implement ValueDataNode ToString

* Serialization IL fixes, fix return and string equality

* Remove async from prototype manager

* Make serializing unsupported node as enum exception more descriptive

* Fix serv3 tryread casting to serializer instead of reader

* Add constructor for invalid node type exception

* Temporary fix for SERV3: Turn populate delegate into regular code

* Fix not copying the data of non primitive types

* Fix not using the data definition found in copying

* Make ISerializationHooks require explicit implementations

* Add test for serialization inheritance

* Improve IsOverridenIn method

* Fix error message when a data definition is null

* Add method to cast a read value in Serv3Manager

* Rename IServ3Manager to ISerializationManager

* Rename usages of serv3manager, add generic copy method

* Fix IL copy method lookup

* Rename old usages of serv3manager

* Add ITypeCopier

* resistance is futile

* we will conquer this codebase

* Add copy method to all serializers

* Make primitive mismatch error message more descriptive

* bing bong im going to freacking heck

* oopsie moment

* hello are you interested in my wares

* does generic serializers under new architecture

* Convert every non generic serializer to the new format, general fixes

* Update usgaes of generic serializers, cleanup

* does some pushinheritance logic

* finishes pushinheritance FRAMEWORK

* shed

* Add box2, color and component registry serializer tests

* Create more deserialized types and store prototypes with their deserialized results

* Fixes and serializer updates

* Add serialization manager extensions

* adds pushinheritance

* Update all prototypes to have a parent and have consistent id/parent properties

* Fix grammar component serialization

* Add generic serializer tests

* thonk

* Add array serializer test

* Replace logger warning calls with exceptions

* fixes

* Move redundant methods to serialization manager extensions, cleanup

* Add array serialization

* fixes context

* more fixes

* argh

* inheritance

* this should do it

* fixes

* adds copiers & fixes some stuff

* copiers use context v1

* finishing copy context

* more context fixes

* Test fixes

* funky maps

* Fix server user interface component serialization

* Fix value tuple serialization

* Add copying for value types and arrays. Fix copy internal for primitives, enums and strings

* fixes

* fixes more stuff

* yes

* Make abstract/interface skips debugs instead of warnings

* Fix typo

* Make some dictionaries readonly

* Add checks for the serialization manager initializing and already being initialized

* Add base type required and usage for MeansDataDefinition and ImplicitDataDefinitionForInheritorsAttribute

* copy by ref

* Fix exception wording

* Update data field required summary with the new forbidden docs

* Use extension in map loader

* wanna erp

* Change serializing to not use il temporarily

* Make writing work with nullable types

* pushing

* check

* cuddling slaps HARD

* Add serialization priority test

* important fix

* a serialization thing

* serializer moment

* Add validation for some type serializers

* adds context

* moar context

* fixes

* Do the thing for appearance

* yoo lmao

* push haha pp

* Temporarily make copy delegate regular c# code

* Create deserialized component registry to handle not inheriting conflicting references

* YAML LINTER BABY

* ayes

* Fix sprite component norot not being default true like in latest master

* Remove redundant todos

* Add summary doc to every ISerializationManager method

* icon fixes

* Add skip hook argument to readers and copiers

* Merge fixes

* Fix ordering of arguments in read and copy reflection call

* Fix user interface components deserialization

* pew pew

* i am going to HECK

* Add MustUseReturnValue to copy-over methods

* Make serialization log calls use the same sawmill

* gamin

* Fix doc errors in ISerializationManager.cs

* goodbye brave soldier

* fixes

* WIP merge fixes and entity serialization

* aaaaaaaaaaaaaaa

* aaaaaaaaaaaaaaa

* adds inheritancebehaviour

* test/datafield fixes

* forgot that one

* adds more verbose validation

* This fixes the YAML hot reloading

* Replace yield break with Enumerable.Empty

* adds copiers

* aaaaaaaaaaaaa

* array fix
priority fix
misc fixes

* fix(?)

* fix.

* funny map serialization (wip)

* funny map serialization (wip)

* Add TODO

* adds proper info the validation

* Make yaml linter 5 times faster (~80% less execution time)

* Improves the error message for missing fields in the linter

* Include component name in unknown component type error node

* adds alwaysrelevant usa

* fixes mapsaving

* moved surpressor to analyzers proj

* warning cleanup & moves surpressor

* removes old msbuild targets

* Revert "Make yaml linter 5 times faster (~80% less execution time)"

This reverts commit 2ee4cc2c26.

* Add serialization to RobustServerSimulation and mock reflection methods
Fixes container tests

* Fix nullability warnings

* Improve yaml linter message feedback

* oops moment

* Add IEquatable, IComparable, ToString and operators to DataPosition
Rename it to NodeMark
Make it a readonly struct

* Remove try catch from enum parsing

* Make dependency management in serialization less bad

* Make dependencies an argument instead of a property on the serialization manager

* Clean up type serializers

* Improve validation messages and resourc epath checking

* Fix sprite error message

* reached perfection

Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Vera Aguilera Puerto <zddm@outlook.es>
2021-03-04 15:59:14 -08:00
Pieter-Jan Briers fba415e765 Bit of work to make Direction.South == Angle.Zero.
This makes Direction no longer follow a cartesian trig circle but oh well. Also helper methods to work with this.

Math tests currently fail, pushing this so Acruid can see about fixing SpriteComponent.
2021-02-21 19:47:42 +01:00
AcruidandGitHub 2183cd7ca1 Massive Namespace Cleanup (#1544)
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.
2021-02-10 23:27:19 -08:00
20kdcandGitHub ee440c2df9 Make the lighting manager much more configurable, including a console lock (#1506) 2021-01-23 21:17:49 +01:00
20kdcandGitHub 6972000293 Make the "softness" of soft shadows adjustible per-light. (#1454)
Note: Thanks to the nature of YAML properties in RobustToolbox, this commit is only an API blocker if the Softness property is directly manipulated from code, which is unlikely.
2020-12-19 21:44:47 +01:00
Pieter-Jan Briers 362b7804d9 Fix issues with .NET 5. 2020-11-11 00:46:35 +01:00
bb2867ad74 Fix occluder tree crash (#1397)
* Fix occluder tree crash

* TryGet

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-11-10 20:06:34 +11:00
deeda5cfa5 Grid-tree occluders (#1362)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-10-30 00:59:52 +01:00
20kdcandGitHub d2949ac474 Polar coordinate lighting implementation (#1324) 2020-10-19 22:39:07 +02:00
Pieter-Jan Briers 0eb9cbfffb Fix incorrect alpha blend funcs.
This caused showbb to allow you to see stars.
2020-10-15 20:06:02 +02:00
Pieter-Jan Briers e87520bea5 Occluder tree for server. 2020-09-24 18:14:24 +02:00
Pieter-Jan Briers d134f31d66 Re-implement DynamicTree<T> on top of B2DynamicTree<T>. 2020-09-24 11:51:50 +02:00
20kdcandGitHub 5146bf8ac2 More configurable lighting (also, "Rounded" mode for Range) (#1274)
* Add support for 'Rounded' mode to Range (and thus Slider)

* Make lighting resolution more configurable

* Use a lighting presets dropper because RemieRichards said so

* Make ConfigLightingQuality not a property and instead two separate methods

* More configurable lighting: cleanup to use a switch rather than an if-chain
2020-09-07 10:57:44 +02:00
Pieter-Jan Briers b4fac5256c More Clyde GL version things.
Correctly use KHR and OES suffixed functions for debug output and VAOs, if necessary.

Allow overriding the detected GL version for feature detection (nvidia gives me an ES 3.2 context even when ES 2.0 is requested, so...)
2020-09-02 22:10:50 +02:00
20kdcandGitHub 4777a0adbf GLES2 users, assemble! (#1266) 2020-09-01 15:27:14 +02:00
Pieter-Jan Briers 0682dcf98c Sprinkle glGetError everywhere. 2020-08-27 02:11:46 +02:00
Pieter-Jan Briers 381cdb5fbb Add OpenGL 3.1 support.
h
2020-08-25 21:44:01 +02:00
9d1bec9bb2 Merge FloatMath and MathHelper (#1234)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-08-20 19:21:07 +02:00
Pieter-Jan Briers e5ddc4f654 Move light intersection check earlier, slight optimization.
Not sure why it wasn't like this in the first place.
2020-07-29 02:10:04 +02:00
Pieter-Jan Briers c482253b9d Clyde debug stats for light count. 2020-07-29 02:06:39 +02:00
16d50f3ecf Container light occlusion (#967)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-07-26 13:28:25 +02:00
Pieter-Jan Briers abdc5418e2 Clyde object resource management.
Objects now use IDisposable().
Finalizers.
2020-07-18 16:01:24 +02:00
Pieter-Jan Briers 7ea6b9c470 Minor cleanup and optimizations inside Clyde. 2020-07-16 16:00:31 +02:00
Pieter-Jan Briers 855e548651 Refactor Clyde internals so multiple viewports is possible. 2020-07-16 16:00:31 +02:00
Pieter-Jan Briers b7e224a56f Moving a ton of rendering code around and it somehow still works somewhat. 2020-07-13 16:27:43 +02:00
Pieter-Jan Briers 4b3be2db3d ACTUALLY remove low res lights biasing hack. 2020-07-07 13:26:35 +02:00
Pieter-Jan Briers daa5a34413 Guess we're doing render trees for lights and occluders aswell. 2020-06-29 20:23:08 +02:00
Pieter-Jan BriersandGitHub 6674be3adc Client NRTs (#1121) 2020-06-12 12:57:39 +02:00
ClyybberandGitHub 9d75c3a1c8 Implement audio occlusion and upgrade to OpenTK 4 (#1068) 2020-05-27 17:50:01 +02:00
Pieter-Jan Briers 1f64080859 Shamelessly up light cap to 128 as a shoddy bandaid for saltern. 2020-04-20 16:19:58 +02:00
AcruidandGitHub a947a38f3c View Rotation (#1016)
* Adds a derived class from Nunit's Is test constraint class.
The game camera can now be rotated.

* Added the new `bind` command to the console, used to bind a key to a keybind.
Added two new keybinds for rotating the View camera left and right.
Added more info to the ""Component does not exist for state" exception.
Added Reduced() and FlipPositive() public functions to Angle.

* Fix a copy/paste bug.

* Adds missing code to bind/unbind CameraRotateLeft.
Camera snapping now actually uses the CameraSnapTolerance constant.
2020-03-25 02:22:18 +01:00
Tyler YoungandGitHub 38aeca2342 Automatic Partial Shader Reloading (#1005)
* merged in shader automatic reloading, remove internal shader reloading

add support for includes to shader reloading, modified includes reload shaders that depends upon them

* add some fault tolerance to allow playing with the file a bit

* prevent multiple watch attempts

* fix spacing

* revert project change

* add cancellation to Reload with a default of 30s

fix case sensitivity comparison

assume windows & mac are case insensitive
2020-02-28 06:27:35 +01:00
Pieter-Jan BriersandGitHub 32bafb66a8 Shadows & FOV. (#992)
* Work on shadow casting.

* Shadowcasting depth works, code cleanup

* Adds #include support to SWSL parser.

* Move lighting shader to swsl.

Also more shader parser fixes.

* Move PI constant to correct file.

* Got functional FOV, working on wall bleed.

* Hey, it kinda works.

* Occluder component now lives in shared.

* Optimizations.

* Fix light map color format.

I set it to something else while testing perf.

* Front face cull final FOV pass.

* Fix holes in occlusion geometry due to disabled occluders.

* Starting work on better wall handling.

* Some comments.

* Improve font-face-culled FOV pass.

* Improve various light biasing things.

* VSM, smooth shadows.

Also unused VSM blurring because it didn't work but committing it like this will forever keep it in Git somewhere.

* FOV smoothing, looks kinda awful.

* Base wall bleed blur strength on camera size.

* The part where I give up.

* Comments. Many comments.

* Allow eyes to disable FOV.

* Improve OccluderComponent on the client.

* Update for occluder component changes.

* Maybe do this properly...
2020-02-23 17:18:58 +01:00
Pieter-Jan Briers 0df2d7c89d More Clyde refactoring, FOV works now. 2020-02-06 14:14:27 +01:00
Pieter-Jan Briers 0169312c0b Not actually functional FOV system.
There's enough various changes in here that this is worth committing already.
2020-02-05 00:10:58 +01:00