Commit Graph

165 Commits

Author SHA1 Message Date
Turánszki János 252722243b graphics error logging (#999) 2025-01-02 17:27:36 +01:00
Turánszki János c5c77b0605 saturation control for sprites, materials and some improvements 2024-08-30 08:28:41 +02:00
Turánszki János 43d485b417 image distortion mask (#862) 2024-06-13 08:04:43 +02:00
Turánszki János 1c38d93304 Editor gui v2 (#843) 2024-05-17 08:04:05 +02:00
Turánszki János 3e8fef22e8 texturehelper improvement, image renderer will use null texture as white 2024-02-16 20:29:12 +01:00
Turánszki János 75457f17ee Sprites and fonts can be added to the scene (#762) 2023-10-14 16:21:05 +02:00
Turánszki János 9b1a46ee85 image renderer mask alpha range control 2023-07-13 18:52:59 +02:00
Turánszki János e02ca53f99 GPU Video Decoding (#661) 2023-04-29 15:44:06 +02:00
Matteo De Carlo e6e2bb176b Compiler warnings fixes (part 1) (#523)
* COMPILER WARNINGS: remove unused variables

* stricter linux compiler options and define fixes

* const char* for string constants

* Always initialize struct EventArgs with some valid values

and another possible use of initialized variable

* revert library change
2022-08-22 18:21:13 +02:00
Turánszki János e741efea62 Image renderer improvements (#502)
* image renderer preparation for custom vertex buffer

* getcurrentrenderpass no longer needed

* corner rounding implementation

* treelist shadow fix

* image renderer border soften parameter
2022-08-08 00:08:54 +02:00
Turánszki János 878a4d9d3a additional safety checks for invalid descriptors 2022-06-22 09:06:40 +02:00
Turánszki János 5e0988e1da Font renderer hdr output remapping (#460) 2022-06-11 19:42:54 +02:00
Turánszki János 731f9aae31 SDF font rendering (#453)
SDF supports following font effects:
- upscaling sharpness improvement
- softness
- bolden
2022-05-30 16:58:27 +02:00
Turánszki János d259baf9e7 Commandlist refactor (#385)
* removed hard coded command list count

* commandlist has internal_state pointer now instead of an index

* BeginCommandList thread safety

* refactor

* acceleration structure builds will not allocate after warmup

* refactors, fixes

* vulkan fix

* fix
2022-01-09 16:57:42 +01:00
Turánszki János 0fdc67dcd0 DX12 custom root signatures (#372)
* dx12: abandoned shader reflection, added support for custom root signatures, removed dxcompiler dependency

* removed dll copies from build scripts

* update

* updates

* updates

* fix

* update

* update

* updates

* added custom root signatures to some passes

* fix

* updates

* comment fix

* allow shaders to not have root signatures, if they are part of a pipeline which has root signature for an other shader

* root signature optimizer

* batched descriptor null initializer

* shader updates

* update

* put the atmospheric sky update to async compute

* improved debug of root constant - push constant data size mismatch

* bitwise root param iteration

* added superluminal perf api

* performance api will be optional

* async updaterenderdata fixes

* fixes

* fixes

* occludee update

* raytraced reflection implementation with ray query instead of rt pipeline

* alwaysactive

* shadercompiler enable old d3dcompiler because why not, it's only loaded on demand now

* removed common sampler api

* root signature simplification

* fixes

* linear allocator fix

* push constants are now immediately set

* fixes

* version

* fix?

* improved descriptor allocator

* default sampler table reduction

* gpu sort lib push constants

* small update

* descriptor allocator safety

* shader compiler refactor

* some optimizations
2021-12-19 15:53:18 +01:00
Turánszki János c4c582d739 general improvements (#368)
* custom implementation for wi::vector

* fix

* sdl vulkan fix

* linux fix

* fix

* vector fix

* shader compiler and job system will be initialized automatically on first use

* vector improvements

* updates

* update

* network and audio will be auto initializing on first use only

* fix

* for now, use std::vector

* vector refactor minor

* backlog: access safety

* shader clearcoat fix

* gui initialization on demand

* initializer updates

* job system will be explicitly initialized
2021-12-09 18:58:27 +01:00
Turánszki János 74cb74d3c9 version 0.60 (#367)
- namespace refactor (example: wiGraphics:: -> wi::graphics)
  - provided namespace compatibility macro for old user code: WICKEDENGINE_BACKWARDS_COMPATIBILITY_0_59
- resource manager will return `Resource` instead of `shared_ptr<Resource>` objects
- MAD shader optimizations
- implemented alpha to coverage with alpha tested materials when MSAA is enabled
- alpha testing fix with transparent shadow maps
- TLAS and scene buffers will be recreated less frequently when things get added/removed from the scene
2021-12-03 21:22:27 +01:00
Turánszki János dfcdbdd40c shader refactor: removed resource and sampler binding macros 2021-11-21 20:10:19 +01:00
Turánszki János 4972763039 RenderPath2D: HDR output scaling 2021-11-19 19:55:13 +01:00
James Webb 4f82ed8fbd wiGraphics refactors (#359)
* Mark concrete graphics device classes as final - they should not be inherited from further.

* Apply consistent snake_cast naming (which has been used in more recent additions) across wiGraphics structs

* Make 'CommandList' type safe so that calling graphics device functions is less error-prone.

* Decouple wiProfiler from wiRenderer by passing the device instance to functions instead of using wiRenderer::GetDevice().

* Bump minor version for graphics refactors.

* Decouple wiHelper screenshot/saveTexture* functions from wiRenderer by providing the graphics device as a parameter.

* Convert wiGraphics.h enums to use enum class (except a couple of raytracing flag enums which seem best left)

* hdr fix

* Documentation updates for enum class.

* Revert "Decouple wiHelper screenshot/saveTexture* functions from wiRenderer by providing the graphics device as a parameter."

This reverts commit fd70249554.

* Revert "Decouple wiProfiler from wiRenderer by passing the device instance to functions instead of using wiRenderer::GetDevice()."

This reverts commit 69b5326cfc.

* Fix debug build

* Fix gcc build (hopefully). Move bitmask operator defs to end of file outside of wiGraphics namespace.

* Remove 'to_underlying' and replace with casts

* graphics device access decoupled from wiRenderer, now should be accessed from wiGraphics::GetDevice()

* minor refactors, comments

* dx12 assert fix

* fixes

* commandlist refactor

* commandlist initial value

* commandlist refactor

* graphicsdevice comments, GetActivePipelineCount() function

* has changed to has_flag

* just rename a thing

Co-authored-by: Turánszki János <turanszkij@users.noreply.github.com>
2021-11-17 20:27:10 +01:00
Turánszki János d3c11eddf6 HDR display support (#341)
* dx12: initial HDR support

* make dx12 more feature level compatible

* vulkan, dx12 hdr updates

* remove trash

* remove postprocess_LDR, tests

* fixes

* added custom display output mapping for hdr10

* renderpath2d srgb->linear mapping for compose blending

* hdr updates

* improvements

* documentation update

* documentation fixes

* vulkan: outdated swapchain handling

* minor fix

* vulkan: hdr workaround with color space change with same format

* improved vulkan swapchain destructor

* updated features.txt
2021-11-09 19:02:01 +01:00
Turánszki János 9a970cde4a fixes for AMD GPU #331 2021-10-12 15:44:20 +02:00
Turánszki János 6f858d6f6c image renderer fix: corners didn't have enough precision as float16 with some projections 2021-09-24 23:52:37 +02:00
Turánszki János f0d6bb7da5 image renderer: more push constant packing 2021-09-23 19:09:30 +02:00
Turanszki Janos e90672cf2f added system initialization timings; profiler fix; 2021-09-16 00:50:07 +02:00
Turánszki János f3687dbf4e DX11 removal, Surfel GI
version 0.57.0:
- DX11 removed, DX12 is default now on Windows
- graphics interfaces improved:
	- Bindless descriptor support is now assumed
	- GPU Buffers with USAGE_UPLOAD and USAGE_READBACK will be persistently mapped after creation
	- Removed Map/Unmap
	- added BindDynamicConstantBuffer helper function
	- improved AllocateGPU helper function
	- GPU Queries resolving can be done directly into GPUBuffer
	- UpdateBuffer now doesn't synchronize internally, this allows batching updates
	- removed support for bindless constant buffers (uniform buffers)
	- BindConstantBuffer will accept offset
	- RESOURCE_STATES refactor, they can be combined now in the barriers
	- many other refactors
- gbuffer normals removed, implemented visibility buffer
- bindless decals, bindless lightmaps, bindless hair particles, bindless software path tracing
- hair particles path tracing support
- path tracing eye adaption supported
- Surfel GI (experimental)
2021-09-05 18:59:03 +02:00
Turanszki Janos 1b7432a57f volumetric cloud updates:
- added light shaft occlusion support
- moved into weather
- parameter access, serialization
2021-06-16 21:57:20 +02:00
Turánszki János f1ced24f05 Multi swapchain support (#257)
* multi swapchain draft

* uwp fix

* swapchain resize handling

* swapchain buffercount

* vsync toggle

* tests fix

* update

* everything removed from graphicsdevice regarding global screen params, engine refactor

* added GetSwapChainTexture() function to graphics device; screenshot() now requires swapChain

* linux fix: vulkan device needs window handle for instance creation

* refactor

* removed unused includes

* shader refactor and lensflare fix

* swapchain clearcolor and other refactors

* vulkan: no vector allocation in submit

* tests fix

* refactors

* lens flare canvas size fix

* gui refactor for canvas support

* refactors

* removed global canvas state

* msaa fix

* fixes

* refactor to minimize interface changes

* gui changes

* checkbox fix

* gui fixes

* fixes

* input system will accept window handle

* editor fixes

* refactor and removed resolution related system events

* small editor update

* refactor: renderpath inherits from canvas

* fixed tests duh

* image refactor

* image fix

* removed every using namespace std

* pushconstant fix

* editor: object picking only when necessary

* removed include

* dx12: copy fence waiting performed on CPU

* dx12 copyallocator update

* vulkan: copy allocator with timeline semaphores

* missing include

* dx12 copy allocator update

* refactor

* editor update

* vulkan copy allocator fix

* dx12 update

* vulkan, dx12 fixes

* version bump

* vsync event helper

* documentation update

* updated vulkan, dx12, dxc
2021-04-22 11:36:22 +02:00
Turánszki János 933080a2e4 Unified Shader Compiler (#250) 2021-03-21 18:54:04 +01:00
Turánszki János 1be19b50d7 Bindless Descriptors (#244)
* bindless descriptors implementation base

* push constants

* dx11 tonemap fix

* stressing bindless descriptors

* lots of fixes

* remove some stuff and cmake update

* cmake update

* performance optimization for scene buffer updating

* documentation and shader compiler updates

* general updates improving scene gpu data updating

* softbody gpu updating improvement

* readme update: gpu based validation

* dx12: omit IA from root when there is no input layout

* vulkan: bindless sampler fix

* vulkan critical fix and renderer update

* dx12 refactor

* fixed BLAS updates and vulkan rt hangs

* object setcastshadow fix

* vulkan raytracing fixes

* vulkan fix

* object shader fix

* documentation update

* rewritten constant buffer arrays as arrays of byte address buffers

* raytraced reflection env probe

* occlusion culling using push constants

* bindless vertex fetch

* fixes
2021-03-08 00:33:40 +01:00
Turanszki Janos ff0292fff9 graphics pipeline state refactor and fixes 2020-12-10 21:10:15 +01:00
Turánszki János 5efe28fdf9 0.51.0 (#200)
* large renderer state refactor;
added subsurface scattering energy conservation;
added emitted particle subsurface scattering;
removed area lights;
optimizations;

* added layerMask support in shaders

* fixed incorrect shadow priority for directional light;
fix point light shadow disconnect;

* fix incorrect shadow assignment
2020-12-07 01:32:44 +01:00
Turánszki János c6f3611439 Event system (#133)
* event system

* more refactor

* fixes

* fixes

* fixes, documentation update
2020-07-04 13:22:11 +01:00
Turánszki János 4a11d6a202 Dpi awareness (#109)
* dpi awareness test

* dpi scaling updates

* dpi scaling updates

* missing mouse inputs fix (I hope finally)

* finishing up the dpi branch...
2020-05-05 00:04:38 +01:00
turanszkij e206ee496f added masked background blur image effect 2020-04-10 22:46:56 +01:00
turanszkij 69616149e5 gui: blurred transparency and usability improvements 2020-04-10 17:09:04 +01:00
Turanszki Janos 2edc017a0c shader refactor #58 2020-02-02 02:16:20 +00:00
Turanszki Janos fa267b0e7d large refactor 2019-12-12 22:15:16 +00:00
Turanszki Janos df963528da cleanup lot of winapi types usage, changed HRESULT return types to bool 2019-11-23 02:23:06 +00:00
Amer Koleci 3d6134b402 Use standard types where possible instead of WIN32 types. 2019-11-22 15:24:48 +01:00
Turanszki Janos 20e56802cc graphics API texture refactor 2019-11-21 22:29:25 +00:00
turanszkij ee988cf55d autopipeline updates 2019-11-15 19:20:12 +00:00
turanszkij 0e5074369f updates. fixes, set to not preserve some passes 2019-10-30 17:19:35 +01:00
turanszkij 60136cdc36 image, stencil and depth test fixes 2019-10-14 19:23:11 +01:00
Turanszki Janos da230269cf user stencil ref refactor; scripting api updates; 2019-10-13 13:07:30 +01:00
turanszkij 705fae5780 big refactor, moved post processes to compute shader 2019-08-11 15:31:30 +01:00
turanszkij 7a82d57517 vulkan, dx12: new descriptor update method;
vulkan, dx12: new dynamic buffer update method;
other updates;
2019-07-18 00:25:22 +01:00
turanszkij 7aa3e3ad6f refactors, fixes, everything seems to work now with multithreaded renderer 2019-07-02 19:04:00 +01:00
turanszkij 3495c277c5 updated fighting game sample: added hp bars; scripting api updates; 2019-04-30 19:54:29 +01:00
turanszkij 6fbfe36665 refactor 2019-04-05 00:05:27 +01:00