summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexShaderManager.cpp
AgeCommit message (Collapse)Author
2022-04-08VertexShaderManager: Use g_ActiveConfig.UseVertexRounding()Pokechu22
2021-12-18VideoCommon: Move VertexLoaderManager logic out of CPStatePokechu22
2021-10-08VideoCommon: update Free Look camera's 'FieldOfView' function to ↵iwubcode
'FieldOfViewMultiplier' to better reflect usage
2021-10-08Core / VideoCommon: refactor FreeLookCamera to have the underlying ↵iwubcode
controller handle all the logic (field-of-view, movement, etc)
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2021-06-09Hack to hide debug cubes in Super Mario SunshinePokechu22
... while not breaking other games.
2021-03-06Convert XFMemory to BitField and enum classPokechu22
Additionally a new ClipDisable union has been added (though it is not currently used by Dolphin).
2021-03-06Convert CPMemory to BitField and enum classPokechu22
Additionally, VCacheEnhance has been added to UVAT_group1. According to YAGCD, this field is always 1. TVtxDesc also now has separate low and high fields whose hex values correspond with the proper registers, instead of having one 33-bit value. This change was made in a way that should be backwards-compatible.
2020-12-24VideoCommon: Add 'Active' state to FreelookCamera to future proof if we ever ↵iwubcode
add multiple cameras
2020-12-24Core / VideoCommon: Remove old Free Look configiwubcode
2020-11-20LightingShaderGen: Always calculate lighting for both color channelsStenzek
Cel-damage depends on lighting being calculated for the first channel even though there is no color in the vertex format (defaults to the material color). If lighting for the channel is not enabled, the vertex will use the default color as before. The default value of the color is determined by the number of elements in the vertex format. This fixes the grey cubes in Super Mario Sunshine. If the color channel count is zero, we set the color to black before the end of the vertex shader. It's possible that this would be undefined behavior on hardware if a vertex color index that was greater than the channel count was used within TEV.
2020-11-17VideoCommon: Migrate over to fmtLioncash
Migrates off the printf-based formatting where applicable.
2020-07-04Merge pull request #8884 from iwubcode/freelook_performance_fixConnor McLaughlin
VertexShaderManager: Only look for freelook config changes if we're using freelook
2020-07-02VertexShaderManager: Avoid accessing freelook control type configuration ↵iwubcode
each call which caused a performance hit, move check to RenderBase where it is checked when config changes
2020-06-25VideoCommon: Use freelook field of view to change the perspective of the cameraiwubcode
2020-06-17VideoCommon: Clean freelook camera dirty state when getting the new viewiwubcode
2020-05-03VideoCommon: remove VertexShaderManager functions instead preferring the ↵iwubcode
direct freelook camera methods
2019-07-10VideoCommon/Statistics: Rename stats global to g_statsLioncash
Makes the global variable follow our convention of prefixing g_ on global variables to make it obvious in surrounding code that it's not a local variable.
2019-06-20VideoCommon/VertexShaderManager: Use std::array where applicableLioncash
We can use this to shorten up the initialization code a little bit. Despite being saved to savestates, this is a non-breaking change.
2019-06-20VideoCommon/Statistics: Use std::array for projection valuesLioncash
Makes the members within the interface much nicer to look at, and also makes copying them over much nicer too.
2019-06-01Common/CommonFuncs: Remove now-unneccessary ArraySize functionLioncash
Since C++17, non-member std::size() is present in the standard library which also operates on regular C arrays. Given that, we can just replace usages of ArraySize with that where applicable. In many cases, we can just change the actual C array ArraySize() was called on into a std::array and just use its .size() member function instead. In some other cases, we can collapse the loops they were used in, into a ranged-for loop, eliminating the need for en explicit bounds query.
2019-04-17VideoCommon: Change free-look's middle-mouse action to roll the camera.Jordan Woyak
2019-02-03WiimoteEmu: Remove redundant Matrix library and use the one in Common.Jordan Woyak
2019-02-03Common: Move Matrix classes out of MathUtil into their own files and make ↵Jordan Woyak
their interface more friendly.
2018-10-14VideoCommon: Clean up class-memaccess warningsTechjar
2018-04-01Remove support for projection hacksJosJuice
This isn't really useful for anything anymore as far as I know.
2018-02-20BPFunctions: Move GX viewport conversion to VideoCommonStenzek
2017-08-27ConstantManager: Use std::array where applicableLioncash
Modernizes the arrays and makes future simplifications possible (e.g. usages within the software renderer). It also makes cases where we use array->pointer decay explicit.
2017-08-08Remove non-integer IRsJosJuice
2017-07-30ShaderGen: Implement vertex ubershadersStenzek
2017-07-30XFMemory: Convert several registers to bitfieldsStenzek
2017-06-15VertexShaderManager: Rename projection hack variablesMerryMage
2017-04-05VideoCommon: rework anamorphic widescreen heuristicMichael Maltese
Some widescreen hacks (see below) properly force anamorphic output, but don't make the last projection in a frame 16:9, so Dolphin doesn't display it correctly. This changes the heuristic code to assume a frame is anamorphic based on the total number of vertex flushes in 4:3 and 16:9 projections that frame. It also adds a bit of "aspect ratio inertia" by making it harder to switch aspect ratios, which takes care of aspect ratio flickering that some games / widescreen hacks would be susceptible with the new logic. I've tested this on SSX Tricky's native anamorphic support, Tom Clancy's Splinter Cell (it stayed in 4:3 the whole time), and on the following widescreen hacks for which the heuristic doesn't currently work: Paper Mario: The Thousand-Year Door (Gecko widescreen code from Nintendont) C202F310 00000003 3DC08042 3DE03FD8 91EEF6D8 4E800020 60000000 00000000 04199598 4E800020 C200F500 00000004 3DE08082 3DC0402B 61CE12A2 91CFA1BC 60000000 387D015C 60000000 00000000 C200F508 00000004 3DE08082 3DC04063 61CEE8D3 91CFA1BC 60000000 7FC3F378 60000000 00000000 The Simpsons: Hit & Run (AR widescreen code from the wiki) 04004600 C002A604 04004604 C09F0014 04004608 FC002040 0400460C 4082000C 04004610 C002A608 04004614 EC630032 04004618 48220508 04041A5C 38600001 04224344 C002A60C 04224B1C 4BDDFAE4 044786B0 3FAAAAAB 04479F28 3FA33333
2017-04-04Add configurable toggle that rounds vertices to the nearest pixel wheniwubcode
w=1. This fixes some games at higher IRs.
2017-03-10Merge pull request #4935 from Armada651/depth-range-fixMarkus Wick
VideoBackends: Set the maximum range when the depth range is oversized.
2017-03-04VideoCommon: Eliminate static state in RendererStenzek
2017-02-26Widescreen Hack improvementgamemasterplc
Fixes Projection alignment in some N64 VC games. The original code forgot to multiply rawProjection[1] and rawProjection[3].
2017-02-26VideoBackends: Use vertex shader depth range if ztexture is used.Jules Blok
2017-02-24OGL: Add support for glDepthRangedNV to handle oversized depth ranges.Jules Blok
2017-01-13VertexShaderManager: Break up the conditions to make it readable.Jules Blok
2017-01-13VertexShaderGen: Remove the need for an extra UID.Jules Blok
2016-12-10ShaderManagers: Use aggregate initialization for some variables.Lioncash
These provide the same semantics, however aggregate initialization doesn't force the structs to be trivially copyable. memset, on the other hand, does.
2016-11-02Core: Remove double newlines at the end of *_LOG messages.Emmanuel Gil Peyrot
2016-09-01VertexShaderManager: Explicitly use floating-point variant of abs.Jules Blok
Some compilers don't have an automatic abs() overload for floats. Doesn't really matter if they use the integer variant here, but it's better to be explicit about the fact that we're using floats.
2016-09-01VertexShaderGen: Move the sonic epsilon hack to the vertex shader.Jules Blok
In the vertex shader we have control over the depth clipping planes, so we don't have to offset every floating point value and lose accuracy.
2016-08-23OGL: Handle cases where reversed depth is already used.Jules Blok
2016-08-21VertexManagerBase: Get rid of static behaviorLioncash
2016-08-16Improve documentation.Jules Blok
2016-08-15VertexShaderGen: Use reversed depth range.Jules Blok
2016-08-15VertexShaderManager: Use a more accurate depth range.Jules Blok
This fixes the gxtest_depth hwtest.