Commit Graph

6830 Commits

Author SHA1 Message Date
Anthony 8a5c9a6445 Consolidate lighting calculations 2021-01-27 22:48:06 +13:00
Anthony c722d80503 Get view transform from transform state 2021-01-27 22:48:05 +13:00
Anthony 54e0c08ef1 Let MultiplyTransform call SetTransform
Detect if it didn't
2021-01-27 22:48:05 +13:00
Anthony c77582524d Fix incorrect toViewer vector when LocalViewer is enabled 2021-01-27 22:48:05 +13:00
PatrickvL 134dd70117 Optimize away SpecularEnable and PointScaleEnable, by resetting the related variables on CPU.
This shaves off almost 50 vertex shader instructions (down to 705 with this).
2021-01-27 22:48:05 +13:00
PatrickvL bd76d67c78 Indentation fixes & add a 'const' prefix to all single-assigned variables, and 'static' for all literal assignments. 2021-01-27 22:48:05 +13:00
PatrickvL 39e91ffec6 Fixed Function HLSL : Optimized ColorVertex handling in DoMaterial, by removing it's check froM HLSL, and replace that by CPU replacing all MaterialSource's with D3DMCS_MATERIAL when X_D3DRS_COLORVERTEX is disabled. This shaves off 13 vertex shader instructions. 2021-01-27 22:48:05 +13:00
PatrickvL 0245cc6ee8 Optimized vertex blending by only recalculating the required world/view matrices, and a simplified HLSL implementation 2021-01-27 22:48:05 +13:00
PatrickvL 8200cd8e43 Fixed Function : Extract method D3D8TransformState::RecalculateDependentMatrices, called via two getters using a dirty boolean, preventing needless recalculations. 2021-01-27 22:48:05 +13:00
PatrickvL 8b8d1e0d39 Fixed Function : Fixed CXBX_ALL_TEXCOORD_INPUTS build, avoid ambiguous symbol redeclaration 2021-01-27 22:48:05 +13:00
Anthony 43be445c37 Copy constants regardless of dirty state 2021-01-27 22:48:05 +13:00
Anthony Miles b4685c1dc2 Initialize all registers for fixed function mode 2021-01-27 22:48:05 +13:00
Anthony Miles f98d040a65 Enable fixed function vertex shader
- Various bits of glue code
- Toggle Shader/D3D9 with F2
- Replace vertex shader mode flags with enum
2021-01-27 22:48:05 +13:00
Anthony 5720444c6b Fix normal transformations
- Keep track of transforms set by the title
- Transform normals by the inverse transpose of the position transform
- X_D3DTRANSFORMSTATETYPE enum
2021-01-27 22:48:05 +13:00
Anthony Miles 3bfad0327f Xbox fixed function vertex shader (not yet enabled)
The shader should behave similarly to D3D9's fixed function pipeline
But supports Xbox extensions and helps to move off D3D9
Co-authored with PatrickVL
2021-01-27 22:48:05 +13:00
Anthony Miles 99a96e675d Add FixedFunctionState to keep track of D3D fixed function lights 2021-01-27 22:48:05 +13:00
Anthony Miles ddc62ad00e Extract HLSL compilation to a method 2021-01-27 22:48:05 +13:00
ergo720 f44f35f6fa
Merge pull request #2076 from RadWolfie/add-cmake-install
Implement CMake Install Support
2021-01-26 13:48:36 +01:00
PatrickvL fe398a4562
Merge pull request #2126 from NZJenkins/fix-wm-paint
Ensure WM_PAINT is handled correctly
2021-01-26 09:52:09 +01:00
Anthony 20549fec19 Ensure WM_PAINT is handled correctly
Otherwise, Windows will send WM_PAINT messages non-stop and burn CPU doing nothing
This fixes an odd behaviour where moving the mouse over the window could increase FPS
2021-01-26 20:08:58 +13:00
Luke Usher ae43ded58b
Merge pull request #2125 from Cxbx-Reloaded/revert-2109-fix-vsh-initialize
Revert "Initialize vertex shader outputs to vertex shader attribute values"
2021-01-21 09:45:30 +00:00
NZJenkins 515df2b533
Revert "Initialize vertex shader outputs to vertex shader attribute values" 2021-01-21 21:59:51 +13:00
PatrickvL 8c1ee7d755
Merge pull request #2124 from Cxbx-Reloaded/revert-2122-high-perf-graphics-ldr
Revert "Export high performance graphics hints in cxbxr-ldr.exe"
2021-01-20 09:56:21 +01:00
PatrickvL b3f1e610ba
Merge pull request #2123 from NZJenkins/optimize-cnk2
Reduce the amount of work done per draw
2021-01-20 09:55:25 +01:00
RadWolfie 7e838ff677 workflow: update azure-pipelines.yml to use CMake's install method 2021-01-19 23:23:56 +00:00
RadWolfie 8d741e66d3 workflow: update appveyor.yml to use CMake's install method 2021-01-19 23:23:56 +00:00
RadWolfie e39a9a0420 workflow: update GitHub Action CI yml to use CMake's install method 2021-01-19 23:23:56 +00:00
RadWolfie ab01047450 cmake: add CMake install method 2021-01-19 23:23:56 +00:00
RadWolfie 6f62ec001b update submodules' fixes 2021-01-19 23:23:56 +00:00
Anthony d7f0957cba Note why LOG_TEST_CASE is where it is 2021-01-19 01:47:02 +13:00
RadWolfie dab91c1913
remove broken source file path originally in pull request 2021-01-18 05:42:38 -06:00
Anthony ce369a6259 PR cleanup
* Create index cache size variable
* Use std::optional
* Make PreviousStates a class variable
* Remove double-cast
* Use LOG_TEST_CASE in VertexShaderSource
Also move LOG_TEST_CASE to CxbxKrnl.h since it's unuseable from Logging.h
2021-01-19 00:32:56 +13:00
Luke Usher 29719e8fc1
Revert "Export high performance graphics hints in cxbxr-ldr.exe" 2021-01-17 22:03:42 +00:00
Anthony 27dbf03743 Only parse a vertex shader if we can't find it in the cache
Try to clean up and rationalize some things along the way
* GetVshFunctionSize lets us hash an Xbox vsh function, so we can check the cache before trying to parse it
* Consider that the vertex shader header won't be passed to the shader parsing code anymore:
  Combine header/headerless paths in EmuParseVertexShader
  Drop Header information from IntermediateVertexShader as it's no longer used
  Remove EmuGetShaderInfo which looked at the header
* Make XboxVertexShaderDecoder static method in a namespace
2021-01-17 20:26:44 +13:00
Anthony 301205051b Increase vertex buffer cache size
Improves performance in Crash Nitro Kart, which did more draws per frame than the cache size.
2021-01-17 20:25:48 +13:00
Anthony 363d91faff Expand the index cache to a generous size
This seems to slightly increase performance in Crash Nitro Kart
which can do ~4000 draws per frame
2021-01-17 20:25:48 +13:00
Anthony 8eeb061a42 Avoid setting texture states to the same value they already are
This improves performance in Crash Nitro Kart
2021-01-17 20:25:48 +13:00
ergo720 59534bdbcc
Merge pull request #2120 from RadWolfie/relocate-controller-dialogs
Relocate controller dialogs into its own folder
2021-01-14 15:40:53 +01:00
PatrickvL 70088b3697
Merge pull request #2122 from CookiePLMonster/high-perf-graphics-ldr
Export high performance graphics hints in cxbxr-ldr.exe
2021-01-12 22:41:32 +01:00
Silent 0bfc4c4479
Export high performance graphics hints in cxbxr-ldr 2021-01-12 21:39:22 +01:00
RadWolfie e7f2e88784
Merge pull request #2121 from Cxbx-Reloaded/LukeUsher-update-compatibility-link
Update Readme.md: Link to Compatibility website
2021-01-12 10:19:24 -06:00
Luke Usher ffee8ace55
Update Readme.md: Link to Compatibility website 2021-01-12 15:39:45 +00:00
RadWolfie 4d84e71363 relocate controller dialogs into its own folder 2021-01-12 14:24:03 +00:00
Luke Usher e0f41fe6f7
Merge pull request #2117 from NZJenkins/clear-fix
Ensure the xbox viewport is applied when Clear is called
2021-01-11 08:11:00 +00:00
PatrickvL aa3c09c430
Merge pull request #2118 from CookiePLMonster/load-vertex-shader-ltcg
Split D3DDevice_LoadVertexShader_0 into two OOVPAs
2021-01-10 16:17:19 +01:00
Silent 55932e5493
Split D3DDevice_LoadVertexShader_0 into two OOVPAs
XDK-5849 version of this LTCG function passes arguments in EAX and EDX
2021-01-10 15:48:05 +01:00
Anthony 38a0f82980 Ensure the xbox viewport is applied when Clear is called
This fixes an issue introduced in 46ec7516fa
The xbox viewport was applied in UpdateNativeD3DResources instead of the SetViewport patch, so wouldn't be applied until a Draw call.
Crash Tag Team Racing graphics would be blacked out whenever the rear view mirror appeared on the screen.
2021-01-11 00:06:15 +13:00
PatrickvL 875f97b5dd
Merge pull request #2112 from x1nixmzeng/fix-ro-launch
Fixed booting games from write-protected drives
2021-01-03 17:57:12 +01:00
x1nixmzeng 9e05b3342d Log a fatal message if registering a host device fails 2021-01-02 00:20:32 +00:00
x1nixmzeng dfe9a19b0d Fixed path registration on write protected drives 2021-01-01 15:52:49 +00:00