BreadFish64
d90f733330
video_core: improve efficiency of CachedSurface::IsSurfaceFullyInvalid
2019-02-09 17:33:18 -06:00
fearlessTobi
6be1b4d293
renderer_base: backport minor changes from yuzu
2019-02-06 17:16:27 +01:00
Weiyi Wang
b5f2318ae7
gl_rasterizer: change shadow_texture_bias from shader config var to shader uniform
...
Games can frequently change this register. Using it as shader config var would generates a lot of shaders
2019-02-02 20:40:08 -05:00
Lioncash
d2aac218a6
renderer_opengl: Correct forward declaration of FramebufferLayout
...
This is actually a struct, not a class, which can lead to compilation
warnings.
2018-12-27 02:48:05 +01:00
Weiyi Wang
07d6d90bb3
gl_rasterizer_cache/MortonCopy: avoid read/write to invalid address
2018-12-09 13:20:44 -05:00
Weiyi Wang
7e8ba6ed8e
Memory: move memory chunk into pImpl and make them dynamically allocated
...
Otherwise MSVC would give out-of-memory error on compile time
2018-12-06 13:30:47 -05:00
Weiyi Wang
d18cda5a5d
Memory: move MarkRegionCached into class
2018-12-05 20:21:14 -05:00
Weiyi Wang
296c458e0e
Memory: move GetPhysicalPointer and IsValidPhysicalAddress into class
2018-12-05 20:21:14 -05:00
Weiyi Wang
8bb404c82a
VideoCore: pass in memory system
...
currently set as global. Will change when videocore itself is wrapped as a class
2018-12-05 20:16:42 -05:00
Francois Berder
c598fd7228
renderer_opengl: Fix string comparison
...
Signed-off-by: Francois Berder <fberder@outlook.fr>
2018-12-04 22:12:35 +00:00
zhupengfei
071b41cb61
citra_qt, video_core: Screenshot functionality
...
Allows capturing screenshot at the current internal resolution (native for software renderer), but a setting is available to capture it in other resolutions. The screenshot is saved to a single PNG in the current layout.
2018-11-30 14:14:41 +08:00
Markus Wick
62036bdea8
gl_rasterizer_cache: Add profiles for Copy and Blit
...
They were missed, and Copy is very high in profile here. It doesn't block the GPU,
but it stalls the driver thread. So with our bad GL instructions, this might block quite a while.
2018-11-17 15:11:56 +01:00
Markus Wick
2b793797e0
gl_resource_manager: Profile creation and deletion
2018-11-17 15:07:30 +01:00
Markus Wick
79696a1a43
gl_stream_buffer: Profile orphaning of stream buffer.
...
This serialize to the driver thread and so it may block for a while.
So if it is in the benchmark, we get noticed if it happens too often.
2018-11-17 15:03:20 +01:00
Markus Wick
392547a97c
gl_resource_manager: Split implementations in .cpp file
...
Those implementations are quite costly, so there is no need to inline them to the caller.
Ressource deletion is often a performance bug, so in this way, we support to add breakpoints to them.
2018-11-17 15:01:40 +01:00
Tobias
46e8237e7e
Port yuzu-emu/yuzu#1137: "renderer_opengl: Namespace OpenGL code" ( #4423 )
...
* renderer_opengl: Namespace OpenGL code
Namespaces all OpenGL code under the OpenGL namespace.
Prevents polluting the global namespace and allows clear distinction
between other renderers' code in the future.
* Also namespace TextureCubeConfig
2018-11-16 23:29:10 -08:00
Weiyi Wang
9458e4d8ec
CoreTiming: wrap into class
2018-11-04 10:26:38 -05:00
B3n30
2306af3600
Handle cases when std::optional does not contain a value
2018-10-05 16:51:33 +02:00
B3n30
d37a2270d6
Replace boost::optional with std::optional where possible
2018-10-05 13:51:09 +02:00
Lioncash
333b6a556a
gl_stream_buffer: Fix use of bitwise OR instead of logical OR in Map()
...
This was very likely intended to be a logical OR based off the
conditioning and testing of inversion in one case.
Even if this was intentional, this is the kind of non-obvious thing one
should be clarifying with a comment.
2018-09-21 17:20:42 -05:00
Weiyi Wang
7d8f115185
Prefix all size_t with std::
...
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
2018-09-06 16:03:28 -04:00
Weiyi Wang
12bba80d48
Merge pull request #4174 from wwylele/proctex-round-fix
...
gl_rasiterzer/proctex: revert back to round() for Nearest sampling
2018-09-04 01:36:16 +03:00
fearlessTobi
488694d01f
Replace ToBool() with static_cast()
2018-09-01 15:50:57 +02:00
Weiyi Wang
99f4ea999c
gl_rasiterzer/proctex: revert back to round() for Nearest sampling
...
This change to floor() was made in 2927c88
, which was a result of doing some hwtest. It turned out that it was buggy edge cases in PICA, and for most cases round() still applies
2018-09-01 09:11:15 -04:00
Weiyi Wang
ffd78b635e
Merge pull request #4163 from FearlessTobi/port-1097
...
Port #1097 from yuzu: "renderer_opengl: Treat OpenGL errors as critical."
2018-08-31 21:43:52 +03:00
bunnei
ffdc27351a
renderer_opengl: Treat OpenGL errors as critical.
2018-08-31 01:56:38 +02:00
Lioncash
6d280cb49a
gl_stream_buffer: Add missing header guard
...
Prevents potential compilation errors from occuring due to multiple
inclusions
2018-08-31 01:45:44 +02:00
fearlessTobi
f61c9c3eb7
video_core: Make global EmuWindow instance part of the base renderer …
...
…class
Makes the global a member of the RendererBase class. We also change this
to be a reference. Passing any form of null pointer to these functions
is incorrect entirely, especially given the code itself assumes that the
pointer would always be in a valid state.
This also makes it easier to follow the lifecycle of instances being
used, as we explicitly interact the renderer with the rasterizer, rather
than it just operating on a global pointer.
2018-08-25 15:20:40 +02:00
Merry
0a5621fafc
Merge pull request #3970 from FearlessTobi/more-popup-madness
...
citra_qt: Add more verbose popups for video_core errors
2018-08-24 19:21:35 +01:00
Lioncash
d944d1120f
video_core: Remove unimplemented Start() function prototype
...
Given this has no definition, we can just remove it entirely.
2018-08-23 16:58:30 +02:00
fearlessTobi
d1c5f01afe
Add more verbose popups for video_core errors
2018-08-19 15:48:40 +02:00
zhupengfei
0c37140690
video_core: Allow changing background color while emulation is running
...
As @jroweboy stated, this is just one more atomic in VideoCore.
2018-08-04 15:11:51 +08:00
James Rowe
14b0435df2
Merge pull request #3994 from FearlessTobi/replace-clamp-functions
...
Remove MathUtil::Clamp and replace it with its std:: counterpart
2018-08-02 11:08:07 -06:00
James Rowe
4b59c1b601
Merge pull request #4042 from wwylele/i-love-drivers
...
gl_rasterizer: apply AMD hack only when the vendor is AMD
2018-08-02 11:01:25 -06:00
wwylele
266f2b6242
gl_rasterizer: only apply AMD hack when the vendor is AMD
2018-07-31 22:58:17 +03:00
Valentin Vanelslande
b2ad88dac1
swrasterizer/lighting: remove newline in logging macro
...
Software rasterizer version of #3904
2018-07-30 16:09:16 -05:00
fearlessTobi
15abf35889
Address feedback by wwylele
2018-07-30 14:46:13 +02:00
fearlessTobi
71e1d6e25d
Fix compile errors
2018-07-26 13:23:25 +02:00
fearlessTobi
7a3e126a4f
Replace MathUtil::Clamp with its std counterpart
2018-07-24 19:08:17 +02:00
Weiyi Wang
78685065cf
Merge pull request #3916 from wwylele/mipmap-proctex
...
gl_rasterizer: implement mipmap for procedural texture
2018-07-19 11:51:57 +03:00
wwylele
431fe444a9
gl_rasterizer: call glTextureBarrier when an image is bound to both texture and framebuffer
2018-07-09 23:11:29 +03:00
Weiyi Wang
7c7adc64fd
Merge pull request #3898 from wwylele/shut-up-texture5
...
swrasterizer, gl_shader_gen: return 0.0 for Disabled texture unit 0
2018-07-07 18:45:13 +03:00
wwylele
2927c88fd3
gl_rasterizer: implement mipmap for proctex
2018-07-06 01:13:02 +03:00
Valentin Vanelslande
b12942a231
gl_shader_gen: remove newline in logging macro
2018-06-30 19:15:15 -05:00
Valentin Vanelslande
fef231dc5b
gl_shader_manager: fix macro
2018-06-30 11:24:38 -05:00
wwylele
4d4b833a00
swrasterizer, gl_shader_gen: return 0.0 for Disabled texture unit 0
2018-06-30 11:36:39 +03:00
wwylele
0eab948728
reformat all files with clang-format
2018-06-29 16:56:12 +03:00
wwylele
7c5a76e58b
log: replace all NGLOG with LOG
2018-06-29 14:18:07 +03:00
NarcolepticK
9ae70e733f
video-core: Migrate logging macros ( #3878 )
...
* video-core: Migrate logging macros
* video-core: Fixed missed clang format
* video-core: Migrated LOG_GENERIC macro
2018-06-29 00:13:30 +03:00
Weiyi Wang
80f6510355
Merge pull request #3851 from wwylele/shut-up-texture3
...
gl_shader_gen: lower log level of using disabled proctex
2018-06-28 18:03:05 +03:00
Markus Wick
c4ff0ba137
renderer_opengl: Renumber all texture units.
...
We spend lots of texture units for our texture buffers. As they are now feed from
one buffer, there is no need to have the big gap in the list of IDs.
2018-06-22 17:21:28 +02:00
Markus Wick
46f18d6800
gl_shader_gen: Inline now constant texture buffer.
2018-06-22 17:20:55 +02:00
Markus Wick
0838c87dac
gl_stream_buffer: Only flush the host buffer if anything was written.
...
This might happen in the new TBO upload path.
2018-06-22 17:20:55 +02:00
Markus Wick
831d4f9aeb
gl_rasterizer: Use the shared texture buffer for the proctex lut.
2018-06-22 17:20:55 +02:00
Markus Wick
1ca6d2ea8d
gl_rasterizer: Use the shared texture buffer for the noise, color and alpha map.
2018-06-22 17:20:55 +02:00
Markus Wick
63fb7dcc1b
gl_rasterizer: Use the shared texture buffer for the fog lut.
2018-06-22 17:20:55 +02:00
Markus Wick
4679487640
gl_rasterizer: Use the shared texture buffer for the lighting lut.
2018-06-22 17:20:54 +02:00
Markus Wick
5a9cde138d
gl_rasterizer: Add a new dirty flag for any lighting lut.
2018-06-22 17:17:48 +02:00
Markus Wick
a8396cdbed
renderer_opengl: Create shared texture buffer.
2018-06-22 17:05:40 +02:00
Markus Wick
298ebe3752
gl_rasterizer: Inline texture buffer uploads.
2018-06-22 17:04:47 +02:00
Markus Wick
8a8c6f059f
gl_rasterizer: Move TBO syncing helper to one function.
2018-06-22 17:04:47 +02:00
Markus Wick
10fba63b94
gl_rasterizer: Provide texture buffer offsets.
...
This allows us to move all data into one TBO.
2018-06-22 17:03:38 +02:00
Weiyi Wang
f50e505a5a
Merge pull request #3778 from wwylele/shadow-hw-image-load-store
...
gl_rasterizer: implement shadow map 2D/Cube - Image load/store version
2018-06-22 17:47:09 +03:00
wwylele
2f9b7bdfa9
gl_shader_gen: lower log level of using disabled proctex
2018-06-20 18:34:01 +03:00
James Rowe
574824a26c
Merge pull request #3632 from N00byKing/3dtv_botenable
...
Add Support for Stereoscopic 3D
2018-06-17 21:05:15 -06:00
James Rowe
cf9bfe0690
Merge pull request #3787 from wwylele/shader-jit-state
...
shader/jit: preserve integer & condition register across invocation
2018-06-09 18:38:05 -06:00
James Rowe
2dac1a9590
Merge pull request #3788 from wwylele/shader-jit-breakc
...
shader/jit: implement breakc
2018-06-09 18:36:46 -06:00
N00byKing
523c52c708
renderer_opengl: Add Universal 3D Layout Adaption
2018-06-01 18:24:26 +02:00
jmorriz124
8c0ede544f
3dtv botenable improved ( #1 )
...
* Fixed crash when right eye isn't available
* Enabled swap screens in stereo views. Fixed window alignment in stereo
views to handle all screen aspect ratios.
* Minor code cleanup and clang fomat updates.
* Minor cleanup of swapped and aspect ratio code
2018-06-01 17:05:29 +02:00
N00byKing
2814bbc3da
renderer_opengl: Allow usage of Stereoscopic 3D
2018-06-01 17:01:06 +02:00
wwylele
781912e854
gl_rasterize: implement shadow mapping using image load/store
2018-06-01 14:26:44 +03:00
Weiyi Wang
08b119153d
Merge pull request #3799 from wwylele/sigh
...
gl_rasterizer: reset texture state context after every draw
2018-06-01 14:24:28 +03:00
wwylele
9060e08e49
shader/jit: implement breakc
2018-06-01 13:04:39 +03:00
wwylele
f0ee4c0595
gl_rasterizer: reset texture state context after every draw
2018-06-01 12:05:30 +03:00
James Rowe
7715fd2c19
Merge pull request #3750 from wwylele/cube-watcher-fix
...
gl_rasterizer_cache: add missing watcher invalidation
2018-05-31 23:11:39 -06:00
James Rowe
f7f5a54bc3
Merge pull request #3751 from wwylele/shader-warning-shutup
...
gl_shader_gen: rearrange function definition to avoid suprious warnings
2018-05-31 23:10:42 -06:00
James Rowe
e63c374ff0
Merge pull request #3714 from wwylele/primitive-restart-guard
...
video_core/command_processor: correctly handles 0xFFFF index as a normal index
2018-05-29 23:22:00 -06:00
Markus Wick
caba02d42a
gl_rasterizer: Don't flip the texture bindings.
...
The state object isn't used anywhere else, so there
is no need to revert the state.
And the comment is just wrong: It doesn't matter
which textures are bound on framebuffer binding, it
only matters at draw time. And we reset all bindings
before the draw call. So let's use gl_state as it is
designed to avoid flipping states.
2018-05-28 21:04:59 +02:00
wwylele
874cb42e70
shader/jit: preserve integer & condition register across invocation
2018-05-28 14:41:47 +03:00
wwylele
92a1252835
gl_shader_gen: rearrange function definition to avoid suprious warnings
2018-05-19 00:36:33 +03:00
wwylele
8b4e832c5f
gl_rasterizer_cache: add missing watcher invalidation
2018-05-18 23:58:43 +03:00
Markus Wick
8e1e52cad9
gl_rasterizer_cache: Use clean state for glBlitFramebuffer.
...
Framebuffer blits depends on pixel tests:
Ownership (is fine)
Scissor (is broken on the last commit)
Masking (is broken on master for a while)
So let's be honest and start with a clean state in
those helper functions.
2018-05-18 21:13:56 +02:00
Markus Wick
301073334a
gl_rasterizer: Remove redundant scissor state change.
...
There is no need to disable this state after the draw call,
gl_state will handle this for us if needed. This kind of
redundant state changes are bad for the driver overhead,
as flipping bits will invalidate the driver state.
2018-05-18 21:13:56 +02:00
wwylele
129b893509
gl_stream_buffer: update the information about the AMD hack
2018-05-18 14:08:12 +03:00
wwylele
dd6252a676
gl_rasterizer: fallback to software shader path if buffer overflow happens on hardware shader path
2018-05-18 13:55:19 +03:00
wwylele
6985b13439
[HACK] AMD workaround
2018-05-14 10:17:36 +03:00
wwylele
ede0d15fec
video_core/command_processor: attempt accelerate draw in draw trigger
2018-05-14 10:17:36 +03:00
wwylele
9b448a0739
gl_rasterizer: implement AccelerateDrawBatch to emulate PICA shader on hardware
2018-05-14 10:17:36 +03:00
MerryMage
15d14be3cc
primitive_assembly: Add getters for internal state
2018-05-14 10:17:35 +03:00
wwylele
06815ec905
video_core: receive hardware shader settings
2018-05-14 10:17:35 +03:00
wwylele
68b0a3e19e
regs_pipeline: use proper unsigned type where applicable
2018-05-06 15:57:48 +03:00
Weiyi Wang
f85e71c37c
Merge pull request #3715 from wwylele/hardware-vertex-vector
...
gl_rasterizer: Use GLvec* instead of C arrays
2018-05-06 07:19:06 +03:00
Weiyi Wang
0da3b75c9e
Merge pull request #3700 from wwylele/texcache-watcher
...
gl_rasterizer_cache: cache texture cube
2018-05-05 16:30:39 +03:00
Markus Wick
5960282303
gl_rasterizer: Use buffer_storage for uniform data.
...
This replaces the glBufferData logic with the shared stream buffer code.
The new code doesn't need a temporary staging buffer any more, so the
performance should imrpove quite a bit.
2018-05-05 09:22:02 +02:00
MerryMage
d6cd1a8712
gl_rasterizer: Use GLvec* instead of C arrays
2018-05-05 04:37:04 +03:00
wwylele
08a38370b0
video_core/command_processor: correctly handles 0xFFFF index as a normal index
2018-05-05 04:24:31 +03:00
Weiyi Wang
be5777f3de
Merge pull request #3686 from wwylele/glvtx-shader-gen
...
gl_shader_gen: generate programmable vs/gs and fixed gs
2018-05-01 21:27:48 +03:00
wwylele
1762ad2dcc
gl_rasterizer_cache: cache texture cube
2018-05-01 21:26:43 +03:00
bunnei
ed42b4b0d2
Merge pull request #3678 from wwylele/b15-fallback
...
gl_shader_decompiler: fallback to CPU shader on GS b15 access
2018-04-25 00:03:11 -04:00
wwylele
191b29e402
gl_shader_gen: generate programmable vs/gs and fixed gs
2018-04-24 20:39:10 +03:00
MerryMage
8186820d16
pica_to_gl: Add GLuvec{2,3,4} aliases
...
To allow for transfer for integers into shaders.
2018-04-23 20:21:24 +03:00
wwylele
e56128683c
gl_shader_decompiler: fallback to CPU shader on GS b15 access
2018-04-23 12:45:56 +03:00
Markus Wick
c4010e3f93
renderer_opengl: Drop GLSync, unused.
2018-04-21 16:12:30 +02:00
Markus Wick
5d1dd205c4
renderer_opengl: Rewrite stream buffer.
2018-04-21 16:12:30 +02:00
wwylele
d52ddd0ec4
shader: avoid recomputing hash for the same program
2018-04-17 09:47:59 +03:00
wwylele
3cc460ab34
shader_jit: change passing ShaderSetup to passing uniforms struct into the program
...
We are going to add private memebers to ShaderSetup, which forbids the usage of offsetof. The JIT program only use the uniform part of the setup, so we can just isolate it.
2018-04-17 09:35:43 +03:00
Weiyi Wang
cb36f9fad2
Merge pull request #3645 from wwylele/shader-manager
...
renderer_opengl: refactor shader & program objects and add shader manager for rasterizer
2018-04-16 16:38:38 +03:00
Weiyi Wang
bfd1d963ba
Merge pull request #3638 from ds84182/we-need-more-rounds
...
Round TEV outputs and the final fragment output in GLSL
2018-04-12 23:32:27 +03:00
Weiyi Wang
9772513141
Merge pull request #3639 from wwylele/texture-cude-fix
...
gl_rasterizer_cache: exit FillTextureCube when address is invalid
2018-04-12 22:54:14 +03:00
wwylele
8dc75598a4
gl_rasterizer: isolate shader management into its own class
2018-04-11 14:52:37 +03:00
wwylele
36bc92273b
gl_shader_gen: accept an option to generate separable shaders
2018-04-11 14:52:37 +03:00
wwylele
bdab18d2d9
gl_resource_manager: add OGLPipeline
2018-04-11 14:52:37 +03:00
wwylele
4f9b9c4b80
gl_state: add pipeline state
2018-04-11 14:41:43 +03:00
wwylele
48869c768f
gl_resource_manager: separate OGLShader and OGLProgram
2018-04-11 14:41:43 +03:00
wwylele
d2ee40dc45
gl_shader_util: separate shader object creation and program object creation
2018-04-11 14:41:43 +03:00
wwylele
4256641da4
gl_rasterizer/lighting: implement shadow attenuation
2018-04-10 20:26:55 +03:00
wwylele
b5763cb952
pica/lighting: split FresnelSelector into bitfields
...
The FresnelSelector was already working like a bitfield, so just make it actual bitfield to reduce redundant code. Also, it is already confirmed that this field also affects shadow on alpha. Given that the only two source that can affect alpha components are both controlled by this field, this field should be renamed to a general alpha switch
2018-04-10 20:25:56 +03:00
wwylele
7e7de7d3ab
gl_rasterizer_cache: exit FillTextureCube when address is invalid
2018-04-08 12:34:50 +03:00
Dwayne Slater
234161ba62
Make byteround less expensive (thanks hrydgard!)
2018-04-07 18:26:14 -04:00
Dwayne Slater
734279ff22
Round TEV outputs and the final fragment output in GLSL
...
Fixes water effect in SM3DL
2018-04-07 16:43:56 -04:00
Weiyi Wang
972db17247
Merge pull request #3497 from wwylele/texture-cube-new
...
gl_rasterizer: implement TextureCube
2018-04-06 12:41:40 +03:00
Weiyi Wang
a9544ca015
Merge pull request #3580 from daniellimws/common-fmt
...
common: Migrate logging macros
2018-04-06 12:38:08 +03:00
Weiyi Wang
e3d25bc6d0
Merge pull request #3567 from wwylele/pica-glsl
...
renderer_opengl: add PICA->GLSL shader decompiler
2018-04-05 14:39:27 +03:00
Weiyi Wang
acb02d300c
Merge pull request #3518 from wwylele/hashable-struct
...
Common/Hash: abstract HashableStruct from GLShader::PicaShaderConfig
2018-04-05 14:39:12 +03:00
James Rowe
1fecead2ff
Merge pull request #3624 from wwylele/sync-uniform
...
gl_rasterizer: move shader uniform sync from SetShader() to ctor
2018-04-05 00:30:38 -06:00
wwylele
0d84c5a0b6
gl_rasterizer: move state syncing from ctor to its own function
2018-04-04 17:23:55 +03:00
wwylele
c2719feda2
gl_rasterizer: move shader uniform sync from SetShader() to ctor
2018-04-03 09:27:23 +03:00
Valentin Vanelslande
c9ab184ec7
pica_to_gl: Migrate logging macros ( #3608 )
2018-04-02 09:31:28 -06:00
wwylele
9ffd400685
gl_shader_decompiler: add missing headers/rename GetXXX to MoveXXX to reflect that they move the data
2018-04-02 17:34:54 +03:00
wwylele
11c2f11872
gl_shader_decompiler: return error on decompilation failure
...
Internally these errors are handled by exceptions. Only fallbackable errors (that can be handled by CPU shader emulation) is reported. Completely ill-formed shader is still ASSERTed. Code logic related stuff is DEBUG_ASSERTed
2018-04-02 17:34:54 +03:00
wwylele
4991b15ee5
gl_shader_decompiler: some small fixes
...
- remove unnecessary ";"
- use std::tie for lexicographical ordering
- simplify loop condition
The offset always has step +1 on each iteration, so it would just hit one of the two boundary anyway
2018-04-02 17:34:54 +03:00
wwylele
f8a292f920
renderer_opengl: add PICA->GLSL shader decompiler
2018-04-02 17:34:54 +03:00
James Rowe
384849232b
Merge pull request #3516 from wwylele/shadow-sw
...
SwRasterizer: Implement shadow mapping
2018-03-31 23:29:22 -06:00
Lioncash
7d331a469f
pica_to_gl: Use std::array where applicable
...
Removes the need to use the ARRAY_SIZE macro
2018-03-31 00:58:49 -04:00
Tobias
bb6251f35f
video_core: Remove Unreachable for invalid BlendEquation modes ( #3595 )
...
* video_core: Remove Unreachable statement
* Lower log level to ERROR
2018-03-29 17:53:55 -06:00
Lioncash
27a3d44b16
gl_rasterizer: Fix incorrect comparison against src_surface in AccelerateTextureCopy()
...
This should actually be comparing the validity of the destination
surface.
2018-03-28 21:13:57 -04:00
Daniel Lim Wee Soong
98760336be
video_core/shader/shader: Remove include cinttypes
2018-03-28 22:40:16 +08:00
Daniel Lim Wee Soong
968569aa61
Replace format specifiers for all usages of ASSERT_MSG
2018-03-27 23:28:42 +08:00
Weiyi Wang
9e4f670ea9
Merge pull request #3484 from wwylele/highlight-fix
...
pica/lighting: compute highlight clamp after one-/two-sided diffuse pass
2018-03-18 23:41:27 +02:00
Mat M
79d1bcf5ba
Merge pull request #3506 from MerryMage/mov-gl_resource_manager
...
gl_resource_manager: Use std::exchange in move assignment operators and constructors
2018-03-17 16:30:58 -04:00
Markus Wick
ac92664aa7
OGL: Use stream buffer for vertex data.
2018-03-17 02:02:39 +01:00
Phantom
50598fbbf4
stream buffer
2018-03-17 02:02:39 +01:00
MerryMage
e3f9bfd850
gl_resource_manager: Use std::exchange instead of std::swap in move assignment operators and constructors
...
Move assignment operators and move constructors should ideally leave the object moved from in a state where resources aren't accessable.
2018-03-16 23:47:49 +00:00
wwylele
30cc8c10cd
Common/Hash: abstract HashableStruct from GLShader::PicaShaderConfig
2018-03-14 00:12:40 +02:00
wwylele
9f8ff7b04e
swrasterizer: implement shadow map rendering
2018-03-13 13:07:07 +02:00
wwylele
ae75d3032f
swrasterizer: implement shadow map sampling
2018-03-13 12:56:19 +02:00
wwylele
ce2ad7436e
swrasterizer/lighting: implement shadow attenuation
2018-03-13 12:56:19 +02:00
wwylele
889d8aaab3
gl_rasterizer/cache: only reallocate cubemap when size/format mismatch
2018-03-11 13:31:29 +02:00
wwylele
15e8664ef7
gl_rasterizer: implement texture cube
2018-03-10 01:15:06 +02:00
wwylele
92c7bb9d20
pica/gl_shader: optimize ternary operator
2018-03-10 01:14:05 +02:00
wwylele
0d6db4a0b3
lighting: compute highlight clamp after one-/two-sided diffuse pass
2018-03-10 01:14:05 +02:00
James Rowe
f61141e86a
Update the entire application to use the new clang format style
2018-03-09 10:54:43 -07:00
bunnei
3cda637cb1
Merge pull request #3478 from j-selby/libpng-switch
...
Remove PICA image dumping, burn libpng
2018-03-07 18:03:38 -05:00
Vamsi Krishna
04cc8fb537
Discard Gas mode renders ( #3486 )
...
* Discard gas_mode renders
This discards the gas_mode / fog effect from games that use it and allows the games to display without it. Note that gas mode is still unimplemented and will LOG<CRITICAL>.
This bypasses #3287 . (Doesn't fix it)
* fix clang
2018-03-07 18:02:36 -05:00
James
077a519338
Remove unused DUMP_TEXTURES definition
2018-03-07 09:13:24 +11:00
James
9829a84fc6
Remove PICA image dumping/libpng
2018-03-07 09:10:54 +11:00
Weiyi Wang
4befbddc34
Merge pull request #3281 from jroweboy/texcache-pt2
...
Texture Cache Rework
2018-03-05 11:57:25 +02:00
wwylele
c2515ff39d
clang-format fix
2018-03-05 11:09:20 +02:00
James Rowe
1d419bac1b
Disable accelerated texture copy for Texture surfaces
2018-03-04 22:06:09 -07:00
James Rowe
18456ff9e6
Address Lioncash's comments
2018-02-05 20:31:50 -07:00
Phantom
9e16a3c449
ConvertD24S8toABGR: fix fb attachment
2018-01-31 08:55:39 -07:00
Phantom
d813bc5eb5
D24S8 to RGBA8 conversion
2018-01-31 08:55:19 -07:00
Phantom
db21154142
GetFramebufferSurfaces: Remove an assert that is no longer correct
2018-01-31 08:54:19 -07:00
James Rowe
b002511df0
citra-qt: Add customizable speed limit target ( #3353 )
...
citra-qt: Add customizable speed limit target
* Update SDL config for the new frame_limit option
* Made max lag time a function of target speed percent.
* Added a checkbox to enable/disable frame limiter
* UI: Prevent frame_limit from under/overflowing
* UI: Hide target speed percent when frame limiter is off
* Disable frame limit spin box when framelimit isn't enabled
2018-01-25 22:24:40 -07:00
Phantom
88f6521511
AccelerateTextureCopy: Better support for contiguous copy
2018-01-20 18:39:27 -07:00
Yuri Kunde Schlesner
d93ee65164
Common: Add convenience function for hashing a struct
2018-01-15 13:43:37 -08:00
Dwayne Slater
41929371dc
Optimize AttributeBuffer to OutputVertex conversion ( #3283 )
...
Optimize AttributeBuffer to OutputVertex conversion
First I unrolled the inner loop, then I pushed semantics validation
outside of the hotloop.
I also added overflow slots to avoid conditional branches.
Super Mario 3D Land's intro runs at almost full speed when compiled with
Clang, and theres a noticible speed increase in MSVC. GCC hasn't been
tested but I'm confident in its ability to optimize this code.
2018-01-02 15:32:33 -08:00
Phantom
7f1aec8fbb
Support for textures smaller than 8*8
2017-12-30 07:42:32 +01:00
Phantom
be1d0cee1e
Fix viewport to surface rect clamping
2017-12-29 17:07:01 +01:00
Phantom
19672cfee8
CachedSurface: Add microprofile scopes for UploadGLTexture and DownloadGLTexture
2017-12-29 17:01:37 +01:00
Phantom
1591fa8d3d
Remove read_framebuffer_handle and draw_framebuffer_handle from CachedSurface
2017-12-29 17:00:09 +01:00
James Rowe
1c4d1d1ace
Move trasnfer_framebuffer to a member of RasterCache. Address review comments
2017-12-23 16:10:32 -07:00
James Rowe
10fb9242ae
Fix clang format
2017-12-23 16:10:32 -07:00
James Rowe
4e053220a8
When downloading from a surface into gl_buffer, ingore any x/y offsets in rect and use 0,0 as the origin
2017-12-23 16:10:31 -07:00
James Rowe
7e673af527
Remove the correct intervals from the surface when validating
2017-12-23 16:10:31 -07:00
James Rowe
ac4c589ab5
Workaround for ICE on gcc5
2017-12-23 16:10:31 -07:00
Phantom
9a6a452857
Fix broken surface validation logic since removal of the reinterpret hack
2017-12-23 16:10:30 -07:00
Phantom
f893daa4a2
Perform the same checks on TexCopy params that SW does
2017-12-23 16:10:30 -07:00
James Rowe
91fad7010b
Fix compilation on mac and linux
2017-12-23 16:10:30 -07:00
James Rowe
34ff77f5f7
Revert "OpenGL Cache: Ignore format reinterpretation hack"
...
Testing found a few games that did some crazy things which breaks the
assumptions made in that commit.
2017-12-23 16:10:29 -07:00
James Rowe
72034b772d
Minor style changes
2017-12-23 16:10:29 -07:00
James Rowe
0498d34d18
OpenGL Cache: Ignore format reinterpretation hack
...
Several games such as Smash will cause some regions that are cached on
the gpu to be revalidated, but (seemingly) we can just ignore these
cases. If the data is already found on the gpu in dirty_regions, then we
validate those, and skip flushing that region from cpu.
Its unknown if this breaks any games, but it does speed up many games.
Additionally, it removes outlines in the pokemon games.
2017-12-23 16:10:29 -07:00
James Rowe
5b872c41d8
OpenGL Cache: Reorder methods
...
The previous commits added the methods where they were located
originally to try to get an easy to read diff between changes. This
commit fixes compliation since the static methods are now declared
before they are used.
2017-12-23 16:10:28 -07:00
James Rowe
24e187891f
OpenGL Rasterizer: Update to use the new cache
2017-12-23 16:10:28 -07:00
James Rowe
e5adb6a26b
OpenGL Cache: Add the rest of the Cache methods
...
Fills in the rasterizer cache methods using the helper methods added in
the previous commits.
2017-12-23 16:10:27 -07:00
James Rowe
81ea32d1e0
OpenGL Cache: Refactor Surface Cache interface
...
Changes the public interface of the surface cache to make it easier to
use. Reintroduces the cached page count cached pages that was removed in
an earlier commit.
2017-12-23 16:10:27 -07:00
James Rowe
3e1cbb7d14
OpenGL Cache: Split CachedSurface
...
Breaks CachedSurface into two classes, the parameters used to create or
find a cached surface, and the actual cached surface. This also adds a
few helper methods for getting surfaces from cache
2017-12-23 16:10:27 -07:00
James Rowe
0b98b768f5
OpenGL Cache: Add surface utility functions
...
Separates creating and filling surfaces into static functions that
can be reused from the different RasterizerCache methods.
2017-12-23 16:10:26 -07:00
James Rowe
e9e2d444ef
OpenGL Cache: Optimize Morton Copy to copy in tiles
...
Compiles two lookup arrays of functions for the different
configurations of Morton Copy.
2017-12-23 16:10:26 -07:00
James Rowe
160ac25527
OpenGL State: Change setters so they don't directly write to curstate
2017-12-23 16:10:25 -07:00
James Rowe
13606a6d0b
Memory: Remove count of cached pages and add InvalidateRegion
...
In a future commit, the count of cached pages will be reintroduced in
the actual surface cache. Also adds an Invalidate only to the cache
which marks a region as invalid in order to try to avoid a costly flush
from 3ds memory
2017-12-23 16:10:25 -07:00
James Rowe
c821c14908
Settings: Change resolution scaling to an integer instead of a float
2017-12-23 16:10:25 -07:00
Subv
3652809408
HLE: Convert GSP_GPU to ServiceFramework.
...
The only functional change is the error handling of GSP_GPU::ReadHWRegs function. We previously didn't return error codes (not even for success). The new returns were found by reverse engineering the GSP module.
2017-12-21 10:30:22 -05:00
Tillmann Karras
fd3ec6be30
video_core: fix infinity and NaN conversions
2017-12-14 19:51:58 +00:00
Yuri Kunde Schlesner
aecd2b85fe
Merge pull request #3261 from MerryMage/DPH
...
shader_jit_x64_compiler: Use haddps for horizontal summation
2017-12-13 09:09:42 -05:00
bunnei
4695f12a08
Merge pull request #3264 from lioncash/cmake-target
...
CMakeLists: Derive the source directory grouping from targets themselves
2017-12-12 14:34:51 -05:00
MerryMage
6c199e4699
fixup! shader_jit_x64_compiler: Use haddps for horizontal summation
2017-12-12 15:37:00 +00:00
Lioncash
ab021d163e
CMakeLists: Derive the source directory grouping from targets themselves
...
Removes the need to store to separate SRC and HEADER variables,
and then construct the target in most cases.
2017-12-11 21:11:52 -05:00
Yuri Kunde Schlesner
ae7240a2cb
Merge pull request #3097 from ds84182/round-primary-color-swrast
...
Round primary color in swrast
2017-12-11 20:06:21 -05:00
MerryMage
efec8fe513
shader_jit_x64_compiler: Use haddps for horizontal summation
2017-12-10 22:04:30 +00:00
Yuri Kunde Schlesner
230a7557f1
Shader: Store AttributeBuffers in GS output buffer
...
This also does the output masking early at EMIT time, instead of when a
triangle is sent to the vertex handler.
2017-12-09 20:33:59 -08:00
Yuri Kunde Schlesner
0184419814
Shader: Refactor output_mask copy loop to function
2017-12-09 20:31:24 -08:00
Tillmann Karras
1c2750d5bd
video_core: optimize NaN check
2017-12-05 22:34:22 +00:00
MerryMage
c1aef260af
shader_jit_x64_compiler: Remove ABI overhead of LG2 and EX2
...
This involves reimplementing log2f and exp2f.
2017-11-30 18:17:35 +00:00
MerryMage
235a251d3c
tests: Add tests for x64 shader jit
...
Tests LG2 and EX2 instructions
2017-11-30 18:17:35 +00:00
Dwayne Slater
fcc141a327
Maintain the PICA's 8 bits of color precision when using the interpolated primary color
...
This matches the software renderer by using round.
The actual hardware rounds the results up instead of flooring.
2017-11-29 16:49:04 -05:00
Dwayne Slater
350082ab75
Fix logic ops not being enabled in the OpenGL renderer
2017-11-29 16:30:19 -05:00
Dwayne Slater
dc48deaecc
Round primary color inputs in software rasterizer
...
OpenGL version coming soon.
2017-11-29 16:30:18 -05:00
James Rowe
9d9693c13d
Revert "Extracted the attribute setup and draw commands into their own functions"
...
This reverts commit b3b34a1e76
. This
commit causes a performance regression for not enough benefits
2017-11-16 11:46:17 -07:00
wwylele
47c0c87c47
video_core: clean format warnings
2017-11-01 12:35:32 +02:00
Dragios
3e26b0dee5
swrasterizer folder minor edit
2017-10-27 09:44:45 +08:00
Dragios
9b3eb69973
Utilize vector function instead
2017-10-26 23:50:20 +08:00
Dragios
84054b7cd8
Get rid of narrowing conversion warning
2017-10-24 00:02:46 +08:00
Dragios
520929dd6d
Fix typo for -Wunused-local-typedefs
2017-10-22 15:56:50 +08:00
Huw Pascoe
b3b34a1e76
Extracted the attribute setup and draw commands into their own functions
2017-10-04 01:08:29 +01:00
Huw Pascoe
a13ab958cb
Fixed type conversion ambiguity
2017-09-30 09:34:35 +01:00
Subv
a321bce378
Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types.
...
It is unlikely we will ever use this without first doing a Cast to a signed type.
Fixes 9 "unary minus operator applied to unsigned type, result still unsigned" warnings on MSVC2017.3
2017-09-27 09:06:41 -05:00
B3n30
dc6a365337
Merge pull request #2951 from huwpascoe/perf-4
...
Optimized Morton
2017-09-25 08:28:55 +02:00
Huw Pascoe
903906da3b
Optimized Float<M,E> multiplication
...
Before:
ucomiss xmm1, xmm1
jp .L9
pxor xmm2, xmm2
mov edx, 1
ucomiss xmm0, xmm2
setp al
cmovne eax, edx
test al, al
jne .L9
.L3:
movaps xmm0, xmm2
ret
.L9:
ucomiss xmm0, xmm0
jp .L10
pxor xmm2, xmm2
mov edx, 1
ucomiss xmm1, xmm2
setp al
cmovne eax, edx
test al, al
je .L3
After:
movaps xmm2, xmm1
mulss xmm2, xmm0
ucomiss xmm2, xmm2
jnp .L3
ucomiss xmm1, xmm0
jnp .L11
.L3:
movaps xmm0, xmm2
ret
.L11:
pxor xmm2, xmm2
jmp .L3
2017-09-25 00:54:02 +01:00
Huw Pascoe
876aa82c29
Optimized Morton
2017-09-24 22:27:14 +01:00
James Rowe
93930a966f
Merge pull request #2921 from jroweboy/batch-fix-2
...
GPU: Add draw for immediate and batch modes
2017-09-24 07:57:16 -06:00
James Rowe
19d41dcc6e
Remove pipeline.gpu_mode and fix minor issues
2017-09-23 09:28:20 -06:00
Yuri Kunde Schlesner
a7758b0b36
Merge pull request #2928 from huwpascoe/master
...
Fixed framebuffer warning
2017-09-22 04:06:38 +02:00
Huw Pascoe
a234e4c200
Improved performance of FromAttributeBuffer
...
Ternary operator is optimized by the compiler
whereas std::min() is meant to return a value.
I've noticed a 5%-10% emulation speed increase.
2017-09-17 15:56:36 +01:00
Huw Pascoe
6a110ac5f5
Fixed framebuffer warning
2017-09-17 11:57:06 +01:00
Yuri Kunde Schlesner
699c920991
Merge pull request #2900 from wwylele/clip-2
...
PICA: implement custom clip plane
2017-09-16 10:23:00 +02:00
James Rowe
ad0b57f407
GPU: Add draw for immediate and batch modes
...
PR #1461 introduced a regression where some games would change configuration
even while in the poorly named "drawing" mode, which broke the heuristic
citra was using to determine when to draw the batch. This change adds
back in a draw call for batching, and also adds in a draw call in
immediate mode each time it adds a triangle.
2017-09-11 09:21:43 -06:00
bunnei
11baa40d75
Merge pull request #2865 from wwylele/gs++
...
PICA: implemented geometry shader
2017-09-07 23:02:59 -04:00
bunnei
ff4941fb3a
Merge pull request #2914 from wwylele/fresnel-fix
...
pica/lighting: only apply Fresnel factor for the last light
2017-09-05 10:00:49 -04:00
wwylele
12fbc8c8df
pica/lighting: only apply Fresnel factor for the last light
2017-09-03 08:22:03 +03:00
wwylele
e2c41a5891
video_core: report telemetry for gas mode
2017-08-31 12:54:17 +03:00
bunnei
f0e461bf6f
Merge pull request #2891 from wwylele/sw-bump
...
SwRasterizer/Lighting: implement bump mapping
2017-08-30 21:07:30 -04:00
Weiyi Wang
647f017c6d
Merge pull request #2892 from Subv/warnings2
...
Warnings: Fixed a few missing-return warnings in video_core.
2017-08-28 03:21:51 -05:00
Subv
da88f3b8f0
Warnings: Fixed a few missing-return warnings in video_core.
2017-08-26 11:58:22 -05:00
wwylele
417cb45e3f
SwRasterizer/Clipper: flip the sign convention to match PICA and OpenGL
2017-08-25 07:26:45 +03:00
wwylele
addbcd5784
gl_rasterizer: implement custom clip plane
2017-08-25 07:26:45 +03:00
wwylele
ea51a3af26
SwRasterizer: implement custom clip plane
2017-08-24 15:34:27 +03:00
wwylele
17c6104d2a
gl_rasterizer/lighting: more accurate CP formula
2017-08-22 09:34:44 +03:00
wwylele
b5aa570354
SwRasterizer/Lighting: implement LUT input CP
2017-08-22 09:34:44 +03:00
wwylele
3e478ca131
SwRasterizer/Lighting: implement bump mapping
2017-08-22 09:34:44 +03:00
wwylele
63b6e802cd
swrasterizer: remove invalid TODO
...
This function is called in clipping, before the pespective divide, and is not used in later rasterization. Thus it doesn't need perspective correction.
2017-08-21 08:03:07 +03:00
wwylele
72b26ac32f
swrasterizer/clipper: remove tested TODO
...
hwtested. Current implementation is the correct behavior
2017-08-21 08:03:07 +03:00
wwylele
5a4af616c6
gl_shader_gen: simplify and clarify the depth transformation between vertex shader and fragment shader
2017-08-21 08:03:07 +03:00
wwylele
1eca380886
gl_rasterizer: add clipping plane z<=0 defined in PICA
2017-08-21 08:03:07 +03:00
Yuri Kunde Schlesner
46d1ca768d
Merge pull request #2872 from wwylele/sw-geo-factor
...
SwRasterizer/Lighting: implement geometric factor
2017-08-20 17:49:42 -07:00
James Rowe
8afa81ac1b
Merge pull request #2871 from wwylele/sw-spotlight
...
SwRasterizer/Lighting: implement spot light
2017-08-19 20:10:24 -06:00
wwylele
0f35755572
pica/command_processor: build geometry pipeline and run geometry shader
...
The geometry pipeline manages data transfer between VS, GS and primitive assembler. It has known four modes:
- no GS mode: sends VS output directly to the primitive assembler (what citra currently does)
- GS mode 0: sends VS output to GS input registers, and sends GS output to primitive assembler
- GS mode 1: sends VS output to GS uniform registers, and sends GS output to primitive assembler. It also takes an index from the index buffer at the beginning of each primitive for determine the primitive size.
- GS mode 2: similar to mode 1, but doesn't take the index and uses a fixed primitive size.
hwtest shows that immediate mode also supports GS (at least for mode 0), so the geometry pipeline gets refactored into its own class for supporting both drawing mode.
In the immediate mode, some games don't set the pipeline registers to a valid value until the first attribute input, so a geometry pipeline reset flag is set in `pipeline.vs_default_attributes_setup.index` trigger, and the actual pipeline reconfigure is triggered in the first attribute input.
In the normal drawing mode with index buffer, the vertex cache is a little bit modified to support the geometry pipeline. Instead of OutputVertex, it now holds AttributeBuffer, which is the input to the geometry pipeline. The AttributeBuffer->OutputVertex conversion is done inside the pipeline vertex handler. The actual hardware vertex cache is believed to be implemented in a similar way (because this is the only way that makes sense).
Both geometry pipeline and GS unit rely on states preservation across drawing call, so they are put into the global state. In the future, the other three vertex shader units should be also placed in the global state, and a scheduler should be implemented on top of the four units. Note that the current gs_unit already allows running VS on it in the future.
2017-08-19 10:13:20 +03:00
wwylele
8285ca4ad8
pica/shader/jit: implement SETEMIT and EMIT
2017-08-19 10:13:20 +03:00
wwylele
36981a5aa6
pica/primitive_assembly: Handle winding for GS primitive
...
hwtest shows that, although GS always emit a group of three vertices as one primitive, it still respects to the topology type, as if the three vertices are input into the primitive assembler independently and sequentially. It is also shown that the winding flag in SETEMIT only takes effect for Shader topology type, which is believed to be the actual difference between List and Shader (hence removed the TODO). However, only Shader topology type is observed in official games when GS is in use, so the other mode seems to be just unintended usage.
2017-08-19 10:13:20 +03:00
wwylele
bb63ae3052
correct constness
2017-08-19 10:13:20 +03:00
wwylele
28128348f2
pica/shader/interpreter: implement SETEMIT and EMIT
2017-08-19 10:13:20 +03:00
wwylele
46c6973d2b
pica/shader: extend UnitState for GS
...
Among four shader units in pica, a special unit can be configured to run both VS and GS program. GSUnitState represents this unit, which extends UnitState (which represents the other three normal units) with extra state for primitive emitting. It uses lots of raw pointers to represent internal structure in order to keep it standard layout type for JIT to access.
This unit doesn't handle triangle winding (inverting) itself; instead, it calls a WindingSetter handler. This will be explained in the following commits
2017-08-19 10:13:20 +03:00
wwylele
686fb3e78c
gl_shader_gen: don't call SampleTexture when bump map is not used
2017-08-11 18:35:00 +03:00
wwylele
945f9a1b04
SwRasterizer/Lighting: implement spot light
2017-08-11 01:19:10 +03:00
wwylele
14ee32c46a
SwRasterizer/Lighting: implement geometric factor
2017-08-11 01:18:43 +03:00
wwylele
5d9d42f0d0
SwRasterizer/Lighting: use make_tuple instead of constructor
...
implicit tuple constructor is a c++17 thing, which is not supported by some not-so-old libraries. Play safe for now
2017-08-10 12:19:58 +03:00
wwylele
db309b2423
pica/regs: layout geometry shader configuration regs
...
All the register meanings are derived from ctrulib (3dbrew is outdated for most of them)
2017-08-10 01:53:08 +03:00
Weiyi Wang
792dee47a7
Merge pull request #2822 from wwylele/sw_lighting-2
...
Implement fragment lighting in the sw renderer (take 2)
2017-08-09 18:54:29 +03:00
wwylele
baa24f4ea9
pica: upload shared shader code to both unit
2017-08-07 10:30:05 +03:00
wwylele
2252a63f80
SwRasterizer/Lighting: shorten file name
2017-08-03 13:51:22 +03:00
wwylele
eda28266fb
SwRasterizer/Lighting: move to its own file
2017-08-02 22:20:40 +03:00
wwylele
48b4105871
SwRasterizer/Lighting: reduce confusion
2017-08-02 22:07:15 +03:00
wwylele
c59ed47608
SwRasterizer/Lighting: move quaternion normalization to the caller
2017-08-02 22:05:53 +03:00
wwylele
c89f804a01
pica/shader_interpreter: fix off-by-one in LOOP
2017-07-27 13:48:27 +03:00
Sebastian Valle
c6a2e519ef
Merge pull request #2816 from wwylele/proctex-lutlutlut
...
gl_rasterizer: use texture buffer for proctex LUT
2017-07-22 23:03:48 -05:00
Sebastian Valle
e646bd902d
Merge pull request #2834 from wwylele/depth-enable-fix
...
gl_rasterizer_cache: fix using_depth_fb
2017-07-22 23:02:59 -05:00
bunnei
df8b9863f9
telemetry: Log performance, configuration, and system data.
2017-07-17 21:32:28 -04:00
wwylele
4feff63ffa
SwRasterizer/Lighting: dist atten lut input need to be clamp
2017-07-11 22:19:00 +03:00
wwylele
56e5425e59
SwRasterizer/Lighting: unify float suffix
2017-07-11 22:15:35 +03:00
wwylele
e415558a4f
SwRasterizer/Lighting: get rid of nested return
2017-07-11 22:15:35 +03:00
wwylele
c6d1472513
SwRasterizer/Lighting: refactor GetLutValue into a function.
...
merging similar pattern. Also makes the code more similar to the gl one
2017-07-11 22:15:35 +03:00
wwylele
f13cf506e0
SwRasterizer: only interpolate quat and view when lighting is enabled
2017-07-11 21:35:57 +03:00
wwylele
efc655aec0
SwRasterizer/Lighting: pass lighting state as parameter
2017-07-11 20:06:26 +03:00
Subv
9906feefbd
SwRasterizer/Lighting: Move the clamp highlight calculation to the end of the per-light loop body.
2017-07-11 19:39:15 +03:00
Subv
7526af5e52
SwRasterizer/Lighting: Move the lighting enable check outside the ComputeFragmentsColors function.
2017-07-11 19:39:15 +03:00
Subv
b8229a7684
SwRasterizer/Lighting: Do not use global registers state in ComputeFragmentsColors.
2017-07-11 19:39:15 +03:00
Subv
7bc467e872
SwRasterizer/Lighting: Do not use global state in LookupLightingLut.
2017-07-11 19:39:15 +03:00
Subv
37ac2b6657
SwRasterizer/Lighting: Fixed a bug where the distance attenuation bias was being set to the dist atten scale.
2017-07-11 19:39:15 +03:00
Subv
6250f52e93
SwRasterizer: Fixed a few conversion warnings and moved per-light values into the per-light loop.
2017-07-11 19:39:15 +03:00
Subv
2d69a9b8bf
SwRasterizer: Run clang-format
2017-07-11 19:39:15 +03:00
Subv
73566ff7a9
SwRasterizer: Flip the vertex quaternions before clipping (if necessary).
2017-07-11 19:39:15 +03:00
Subv
2a75837bc3
SwRasterizer: Corrected the light LUT lookups.
2017-07-11 19:39:15 +03:00
Subv
f2d4d5c219
SwRasterizer: Corrected the light LUT lookups.
2017-07-11 19:39:15 +03:00
Subv
80b6fc592e
SwRasterizer: Fixed the lighting lut lookup function.
2017-07-11 19:39:15 +03:00
Subv
10b0bea060
SwRasterizer: Calculate fresnel for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
46b8c8e1da
SwRasterizer: Calculate specular_1 for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
be25e78b07
SwRasterizer: Calculate specular_0 for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
b2f472a2b1
SwRasterizer: Implement primary fragment color.
2017-07-11 19:39:15 +03:00
wwylele
8482933db8
gl_rasterizer: use texture buffer for proctex LUT
2017-07-01 11:02:48 +03:00
wwylele
8978ecb09c
gl_rasterizer: use texture buffer for fog LUT
2017-06-22 20:41:00 +03:00
wwylele
f1e377f57e
gl_rasterizer: create the texture before applying the state
...
this is a rebasing error from #2792 . It doesn't affect much though, because the later more Apply() call fixes/hides it
2017-06-22 17:47:46 +03:00
wwylele
457659fe01
gl_state: reset 1d textures
2017-06-21 23:13:06 +03:00
wwylele
42f7ca7412
gl_rasterizer: fix glGetUniformLocation type
2017-06-21 23:13:06 +03:00
wwylele
be9e952bdc
gl_rasterizer: manage texture ids in one place
2017-06-21 23:13:06 +03:00
wwylele
ab60414122
gl_rasterizer/lighting: fix LUT interpolation
2017-06-21 23:13:06 +03:00
Yuri Kunde Schlesner
d0888f8548
Merge pull request #2776 from wwylele/geo-factor
...
Fragment lighting: implement geometric factor
2017-06-18 14:18:48 -07:00
wwylele
5a454173a8
gl_rasterizer/lighting: use the formula from the paper for germetic factor
2017-06-18 10:29:02 +03:00
Yuri Kunde Schlesner
f6715f98f5
Stop using reserved operator names (and/or/xor) with Xbyak
...
Also has the Dynarmic upgrade with the same change
2017-06-17 12:20:22 -07:00
wwylele
7052d43a67
gl_rasterizer/lighting: implement geometric factor
2017-06-15 14:59:01 +03:00
Yuri Kunde Schlesner
da1bec121a
Merge pull request #2762 from wwylele/light-cp-tangent
...
Fragment lighting: implement lut input 5 (CP) and tangent mapping
2017-06-14 20:08:26 -07:00
Yuri Kunde Schlesner
5fe5ccac42
Merge pull request #2743 from wwylele/wrap-fix
...
pica/rasterizer: implement/stub texture wrap mode 4-7
2017-06-13 21:28:12 -07:00
Yuri Kunde Schlesner
791cd14c8d
Merge pull request #2767 from yuriks/quaternion-flip-comment
...
OpenGL: Update comment on AreQuaternionsOpposite with new information
2017-06-12 16:31:55 -07:00
wwylele
972548e3ee
gl_rasterizer/lighting: Implement tangent mapping
2017-06-11 21:30:53 +03:00
wwylele
40b7d0bf3f
gl_rasterizer/lighting: implement lut input 5 (CP)
2017-06-11 21:30:53 +03:00
Sebastian Valle
39c7c1f580
Merge pull request #2727 from wwylele/spot-light
...
Fragment lighting: implement spot light
2017-06-11 18:23:47 +00:00
wwylele
b3b9468573
gl_rasterizer_cache: depth write is disabled if allow_depth_stencil_write is false
2017-06-10 15:10:34 +03:00
Yuri Kunde Schlesner
ba01a8302a
OpenGL: Update comment on AreQuaternionsOpposite with new information
...
While debugging the software renderer implementation, it was noticed
that this is actually exactly what the hardware does, upgrading the
status of this "hack" to being a proper implementation. And there was
much rejoicing.
2017-06-10 01:55:17 -07:00
wwylele
28d1e73d2f
pica/rasterizer: implement/stub texture wrap mode 4-7
2017-06-04 09:47:25 +03:00
bunnei
54ea95cca7
Merge pull request #2721 from wwylele/texture-cube
...
swrasterizer: implemented TextureCube
2017-05-30 10:21:05 -04:00
wwylele
10906dceec
gl_rasterizer: implement spot light
2017-05-30 10:54:58 +03:00
wwylele
686cbf3ac6
gl_rasterizer: sync spot light status
2017-05-30 10:54:58 +03:00
wwylele
b5addf8fb8
pica: prepare registers for spotlight
2017-05-30 10:54:58 +03:00
Yuri Kunde Schlesner
a4f88c7d7c
Merge pull request #2734 from yuriks/cmake-imported-libs
...
CMake: Use CMake target properties for all libraries
2017-05-29 15:12:21 -07:00
wwylele
0b9bb082c3
swrasterizer: implement TextureCube
2017-05-29 22:28:48 +03:00
wwylele
077cc683e5
pica: add registers for texture cube
2017-05-29 22:03:08 +03:00
Yuri Kunde Schlesner
3df85a103a
Merge pull request #2729 from yuriks/quaternion-fix
...
OpenGL: Improve accuracy of quaternion interpolation
2017-05-28 01:24:06 -07:00
Yuri Kunde Schlesner
d736cca848
CMake: Create INTERFACE targets for microprofile and nihstro
2017-05-27 22:34:52 -07:00
Yuri Kunde Schlesner
4660bc1c78
CMake: Use IMPORTED target for libpng
2017-05-27 20:44:51 -07:00
Yuri Kunde Schlesner
7b81903756
CMake: Correct inter-module dependencies and library visibility
...
Modules didn't correctly define their dependencies before, which relied
on the frontends implicitly including every module for linking to
succeed.
Also changed every target_link_libraries call to specify visibility of
dependencies to avoid leaking definitions to dependents when not
necessary.
2017-05-27 18:41:24 -07:00
Yuri Kunde Schlesner
eb10f25025
Move screen size constants from video_core to core
...
video_core didn't even properly use them, and they were the source of
many otherwise-unnecessary dependencies from core to video_core.
2017-05-27 18:41:24 -07:00
Yuri Kunde Schlesner
6665557ff7
OpenGL: Remove unused RendererOpenGL fields
2017-05-27 18:02:46 -07:00
Yuri Kunde Schlesner
669ef82aee
OpenGL: Improve accuracy of quaternion interpolation
...
Current order of operations (rotate then normalize) seems to produce a
lot more distortion than normalizing and then rotating. This makes Citra
results match pretty closesly with hardware, and indicates that hardware
may also be using lerp instead of slerp to interpolate the quaternions.
2017-05-27 00:13:41 -07:00
wwylele
90c8d09098
gl_shader: refactor texture sampler into its own function
2017-05-27 01:56:22 +03:00
Yuri Kunde Schlesner
bae3799bd5
Merge pull request #2697 from wwylele/proctex
...
Implemented Procedural Texture (Texture Unit 3)
2017-05-24 21:37:42 -07:00
wwylele
36526c63ef
swrasterizer: add missing tc0_w and fragment lighting attribute processing
2017-05-21 09:09:15 +03:00
wwylele
4d62e75fb2
gl_rasterizer: implement procedural texture
2017-05-20 13:50:50 +03:00
wwylele
ade45b5b99
pica/swrasterizer: implement procedural texture
2017-05-20 13:50:50 +03:00
wwylele
393fee10a2
pica: use correct register value for shader bool_uniforms
...
variable value is not masked. the masked and combined register value should be used instead
2017-05-17 22:14:09 +03:00
Yuri Kunde Schlesner
8d558777a6
Merge pull request #2703 from wwylele/pica-reg-revise
...
pica: correct bit field length for some registers
2017-05-16 10:00:37 -07:00
wwylele
86ee1f6101
pica: correct bit field length for some registers
2017-05-16 19:24:06 +03:00
Jannik Vogel
ba722be2ac
Pica: Write GS registers
...
This adds the handlers for the geometry shader register writes which will call the functions from the previous commit to update registers for the GS.
2017-05-12 16:22:37 +02:00
Jannik Vogel
3fd3775d35
Pica: Write shader registers in functions
...
The commit after this one adds GS register writes, so this moves the VS handlers into functions so they can be re-used and extended more easily.
2017-05-12 16:22:37 +02:00
Jannik Vogel
925724c990
Pica: Set program code / swizzle data limit to 4096
...
One of the later commits will enable writing to GS regs.
It turns out that on startup, most games will write 4096 GS program words.
The current limit of 1024 would hence result in 3072 (4096 - 1024) error messages:
```
HW.GPU <Error> video_core/shader/shader.cpp:WriteProgramCode:229: Invalid GS program offset 1024
```
New constants have been introduced to represent these limits.
The swizzle data size has also been raised. This matches the given field sizes of [GPUREG_SH_OPDESCS_INDEX](https://3dbrew.org/wiki/GPU/Internal_Registers#GPUREG_SH_OPDESCS_INDEX ) and [GPUREG_SH_CODETRANSFER_INDEX](https://www.3dbrew.org/wiki/GPU/Internal_Registers#GPUREG_SH_CODETRANSFER_INDEX ) (12 bit = [0; 4095]).
2017-05-11 15:01:27 +02:00
wwylele
039b293092
pica: shader_dirty if texture2 coord changed
2017-05-05 15:35:17 +03:00
wwylele
0f664ef89d
pica: use correct coordinates for texture 2
2017-05-03 22:12:46 +03:00
bunnei
ea53d6085a
Merge pull request #2671 from wwylele/dot3-rgba
...
rasterizer: implement combiner operation 7 (Dot3_RGBA)
2017-04-21 17:03:22 -04:00
wwylele
2c2e872b31
gl_shader_gen: remove TODO about Lerp behaviour verification. The implementation is verified against hardware
2017-04-20 22:56:07 +03:00
wwylele
b624a95205
rasterizer: implement combiner operation 7 (Dot3_RGBA)
2017-04-19 23:48:10 +03:00
Yuri Kunde Schlesner
52a4489d65
OpenGL: Pass Pica regs via parameter
2017-04-17 10:34:45 -07:00
Yuri Kunde Schlesner
a6fd4533f6
OpenGL: Move PicaShaderConfig to gl_shader_gen.h
...
Also move the implementation of CurrentConfig to the cpp file.
2017-04-16 21:49:32 -07:00
Yuri Kunde Schlesner
40e28f6217
OpenGL: Move Attributes enum to a more appropriate file
2017-04-16 20:47:04 -07:00
Jannik Vogel
1b397c77fa
Pica/Regs: Correct bit width for blend-equations
2017-04-08 18:33:17 +02:00
wwylele
e02c4b7195
Input: remove unused stuff & clean up
...
1. removed zl, zr and c-stick from HID::PadState. They are handled by IR, not HID
2. removed button handling in EmuWindow
3. removed key_map
4. cleanup #include
2017-03-01 23:30:57 +02:00
Mat M
0cb52ee74a
Doxygen: Amend minor issues ( #2593 )
...
Corrects a few issues with regards to Doxygen documentation, for example:
- Incorrect parameter referencing.
- Missing @param tags.
- Typos in @param tags.
and a few minor other issues.
2017-02-26 17:58:51 -08:00
Yuri Kunde Schlesner
fb1979d7e2
Core: Re-write frame limiter
...
Now based on std::chrono, and also works in terms of emulated time
instead of frames, so we can in the future frame-limit even when the
display is disabled, etc.
The frame limiter can also be enabled along with v-sync now, which
should be useful for those with displays running at more than 60 Hz.
2017-02-26 17:22:04 -08:00
Yuri Kunde Schlesner
b285c2a4ed
Core: Make PerfStats internally locked
...
More ergonomic to use and will be required for upcoming changes.
2017-02-26 17:22:03 -08:00
Yuri Kunde Schlesner
3b4e400333
Remove built-in (non-Microprofile) profiler
2017-02-26 17:22:03 -08:00
Yuri Kunde Schlesner
c75ae6c585
Add performance statistics to status bar
2017-02-26 17:22:03 -08:00
Jannik Vogel
e594e63bb5
OpenGL: Check if uniform block exists before updating it ( #2581 )
2017-02-18 11:46:26 -08:00
Weiyi Wang
e085e6a768
video_core: remove #pragma once in cpp file ( #2570 )
2017-02-15 00:16:50 -08:00
Yuri Kunde Schlesner
426fda1d52
SWRasterizer: Move more framebuffer functions to file
2017-02-12 18:13:04 -08:00
Yuri Kunde Schlesner
1683cb0ec9
SWRasterizer: Move texturing functions to their own file
2017-02-12 18:12:37 -08:00
Yuri Kunde Schlesner
f9026e8a7a
SWRasterizer: Convert large no-capture lambdas to standalone functions
2017-02-12 18:11:05 -08:00
Yuri Kunde Schlesner
e1ad7d69b9
SWRasterizer: Move framebuffer operation functions to their own file
2017-02-12 18:11:03 -08:00
Yuri Kunde Schlesner
e24717bca0
VideoCore: Move software rasterizer files to sub-directory
2017-02-12 18:08:11 -08:00
Yuri Kunde Schlesner
e10b11a5d0
video_core/shader: Document sanitized MUL operation
2017-02-12 13:29:14 -08:00
Yuri Kunde Schlesner
443bb3d522
Merge pull request #2550 from yuriks/pica-refactor2
...
Small VideoCore cleanups
2017-02-12 12:33:26 -08:00
Yuri Kunde Schlesner
e2fa1ca5e1
video_core: Fix benign out-of-bounds indexing of array ( #2553 )
...
The resulting pointer wasn't written to unless the index was verified as
valid, but that's still UB and triggered debug checks in MSVC.
Reported by garrettboast on IRC
2017-02-10 20:51:09 -08:00
Yuri Kunde Schlesner
553e672777
VideoCore: Split u64 Pica reg unions into 2 separate u32 unions
...
This eliminates UB when aliasing it with the array of u32 regs, and
is compatible with non-LE architectures.
2017-02-09 00:04:25 -08:00
Yuri Kunde Schlesner
bfb1531352
VideoCore: Force enum sizes to u32 in LightingRegs
...
All enums that are used with BitField must have their type forced to u32
to ensure correctness.
2017-02-09 00:04:24 -08:00
Yuri Kunde Schlesner
af65e1c0a0
OpenGL: Remove unused duplicate of IsPassThroughTevStage
...
This copy was left behind when the shader generation code was moved to a
separate file.
2017-02-09 00:04:24 -08:00
Yuri Kunde Schlesner
60fc0b086f
VideoCore: Split regs.h inclusions
2017-02-09 00:04:24 -08:00
Yuri Kunde Schlesner
f241bb72f5
Pica/Regs: Use binary search to look up reg names
...
This gets rid of the static unordered_map. Also changes the return type
const char*, avoiding unnecessary allocations (the result was only used
by calling .c_str() on it.)
2017-02-09 00:04:24 -08:00
Yuri Kunde Schlesner
602f57da38
VideoCore: Use union to index into Regs struct
...
Also remove some unused members.
2017-02-08 22:13:25 -08:00
Yuri Kunde Schlesner
2889372e47
Merge pull request #2482 from yuriks/pica-refactor
...
Split up monolithic Regs struct
2017-02-08 22:07:34 -08:00
Lectem
f146a6d45a
Use std::array<u8,2> instead of u8[2] to fix MSVC build
2017-02-05 14:55:51 +01:00
Yuri Kunde Schlesner
5759d94b5c
VideoCore: Move Regs to its own file
2017-02-04 13:59:12 -08:00
Yuri Kunde Schlesner
f7c7f422c6
VideoCore: Split shader regs from Regs struct
2017-02-04 13:59:11 -08:00
Yuri Kunde Schlesner
8fca90b5d5
VideoCore: Split geometry pipeline regs from Regs struct
2017-02-04 13:59:11 -08:00
Yuri Kunde Schlesner
f443c7e5b0
VideoCore: Split lighting regs from Regs struct
2017-02-04 13:59:11 -08:00
Yuri Kunde Schlesner
23713d5dee
VideoCore: Split framebuffer regs from Regs struct
2017-02-04 13:59:11 -08:00
Yuri Kunde Schlesner
9017093f58
VideoCore: Split texturing regs from Regs struct
2017-02-04 13:59:09 -08:00
Yuri Kunde Schlesner
000e78144c
VideoCore: Split rasterizer regs from Regs struct
2017-02-04 13:08:47 -08:00
Yuri Kunde Schlesner
97e06b0a0d
Merge pull request #2476 from yuriks/shader-refactor3
...
Oh No! More shader changes!
2017-02-04 13:02:48 -08:00
Yuri Kunde Schlesner
c74787a11c
Pica/Texture: Move part of ETC1 decoding to new file and cleanups
2017-02-04 12:33:28 -08:00
Yuri Kunde Schlesner
09a750e866
Pica/Texture: Simplify/cleanup texture tile addressing
2017-02-04 12:33:25 -08:00
Yuri Kunde Schlesner
a1c9ac7845
VideoCore: Move LookupTexture out of debug_utils.h
2017-02-04 12:31:40 -08:00
wwylele
6dc1d6e568
ShaderJIT: add 16 dummy bytes at the bottom of the stack
2017-02-03 14:53:38 +02:00
Weiyi Wang
0b9c59ff22
Common/x64: remove legacy emitter and abi ( #2504 )
...
These are not used any more since we moved shader JIT to xbyak.
2017-01-31 01:06:42 -08:00
Merry
f7e96dc068
shader_jit_x64_compiler: esi and edi should be persistent ( #2500 )
2017-01-31 00:38:31 -08:00
Yuri Kunde Schlesner
37a4ea046d
VideoCore: Make PrimitiveAssembler const-correct
2017-01-29 21:31:38 -08:00
Yuri Kunde Schlesner
dcdffabfe6
VideoCore: Extract swrast-specific data from OutputVertex
2017-01-29 21:31:38 -08:00
Yuri Kunde Schlesner
8ed9f9d49f
VideoCore/Shader: Clean up OutputVertex::FromAttributeBuffer
...
This also fixes a long-standing but neverthless harmless memory
corruption bug, whech the padding of the OutputVertex struct would get
corrupted by unused attributes.
2017-01-29 21:31:38 -08:00
Yuri Kunde Schlesner
92bf5c88e6
VideoCore: Split shader output writing from semantic loading
2017-01-29 21:31:37 -08:00
Yuri Kunde Schlesner
335df895b9
VideoCore: Consistently use shader configuration to load attributes
2017-01-29 21:31:37 -08:00
Yuri Kunde Schlesner
fccb28d2e9
VideoCore: Use correct register for immediate mode attribute count
2017-01-29 21:31:36 -08:00
Yuri Kunde Schlesner
ab6954e942
VideoCore: Rename some types to more accurate names
2017-01-29 21:31:36 -08:00
Yuri Kunde Schlesner
bbc7844021
VideoCore: Change misleading register names
...
A few registers had names such as "count" or "number" when they actually
contained the maximum (that is, count - 1). This can easily lead to hard
to notice off by one errors.
2017-01-29 21:31:36 -08:00
Kloen
eee37b857b
video_core: gl_rasterizer_cache.cpp removed unused type alias
2017-01-30 05:18:28 +01:00
Kloen
6a3a3964b0
video_core: gl_rasterizer.cpp removed unused type alias
2017-01-30 05:16:48 +01:00
Kloen
4652d70572
video_core: silence unused-local-typedef boost related warning on GCC
2017-01-29 21:24:24 +01:00
Yuri Kunde Schlesner
0e9081b973
VideoCore/Shader: Move entry_point to SetupBatch
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
0f64274145
VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetup
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
6fa3687afc
Shader: Remove OutputRegisters struct
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
9ea5eacf91
Shader: Initialize conditional_code in interpreter
...
This doesn't belong in LoadInputVertex because it also happens for
non-VS invocations. Since it's not used by the JIT it seems adequate to
initialize it in the interpreter which is the only thing that cares
about them.
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
1a2acc3baa
Shader: Don't read ShaderSetup from global state
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
fa4ac279a7
shader_jit_x64: Don't read program from global state
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
ade7ed7c5f
VideoCore/Shader: Move ProduceDebugInfo to InterpreterEngine
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
114d6b2f97
VideoCore/Shader: Split interpreter and JIT into separate ShaderEngines
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
8eefc62833
VideoCore/Shader: Rename shader_jit_x64{ => _compiler}.{cpp,h}
2017-01-25 18:53:23 -08:00