Commit Graph

173 Commits

Author SHA1 Message Date
fincs
a41dac3e3a Add C3D_EarlyDepthTest() {currently unusable due to glitchy rendering} 2017-04-02 17:14:49 +02:00
fincs
ce1aa48a12 Better detection of the need to reupload vsh/gsh code 2017-04-01 19:25:16 +02:00
fincs
eb87a7327b Remove gxCmdQueueStop/gxCmdQueueRun calls in VBlank handlers 2017-04-01 12:41:31 +02:00
fincs
6ed4497102 Fix typo in renderqueue.c onVBlank1() [thanks mtheall] 2017-04-01 12:22:11 +02:00
fincs
91b89c7a62 Allow for separate light amb/dif/spe colors 2017-03-30 23:42:58 +02:00
fincs
7354976bca Some tweaks to Spotlight support 2017-03-30 23:42:29 +02:00
fincs
370e938520 LightLut/LightEnv: generate/use proper LUTs for the [0,1] domain 2017-03-30 23:39:39 +02:00
fincs
07d380221e Correct transferring right-framebuf when 3d is enabled 2017-03-30 23:37:30 +02:00
fincs
2fc57e99b9 Replace most of the renderqueue logic with GX command queues, details:
- Removed double buffered gpu cmdbuffer (might be added back later)
- Added a global gxCmdQueue which by default is configured to run
  commands as they arrive (in the future it might be double buffered)
- Added C3D_FrameSync for explicitly waiting for "vblank"
- Repurposed C3D_FRAME_SYNCDRAW to perform C3D_FrameSync
- Added C3D_FrameSplit for splitting/submitting the gpu cmdlist in the
  middle of a renderqueue frame
- C3D_RenderTargetSetClear is still supported, however it's unofficially
  deprecated (it's performed after drawing/transferring instead of before
  drawing, which is pretty counter-intuitive)
- C3D_RenderTargetSetOutput is explicitly NOT deprecated since it's
  necessary to avoid screen tearing when transferring to the screen
  framebuffers (this stems from a Nintendo design flaw where screen swap
  processing is done immediately after GX transfers finish)
2017-03-26 20:24:23 +02:00
fincs
9f8f5e320a Added C3D_FrameBuf{Clear/Transfer} and C3D_Calc{Color/Depth}BufSize 2017-03-26 20:02:05 +02:00
fincs
1739f88e40 Add support for procedural textures (Texture Unit 3) 2017-03-15 16:49:06 +01:00
fincs
33c6a10be5 Correct LightLut_FromFunc/LightLutDA_Create input range 2017-03-15 16:43:01 +01:00
fincs
99be4ec656 Fix typo in C3D_TexGetImagePtr 2017-03-10 17:21:59 +01:00
fincs
c030f3e70a Use weak symbols instead of function pointers for optional features 2017-03-05 23:28:30 +01:00
fincs
96e65d48be Fix typo in C3D_UpdateUniforms 2017-03-04 18:16:20 +01:00
fincs
05d8f08375 Fix C3D_LightEnvLut used when disabling a LUT 2017-03-04 18:16:07 +01:00
fincs
5e156dd719 Add C3D_GetDrawingTime/C3D_GetProcessingTime 2017-02-16 14:39:48 +01:00
fincs
033c600e20 Remove counterintuitive NULL protection in texture code (fixes #31) 2017-02-15 17:42:23 +01:00
fincs
46117ec90a Fix some cases of GPU freezing when changing programs 2017-02-15 00:31:27 +01:00
fincs
141afdb18a Correct inaccurate WolframAlpha link in mtx_persp.c 2017-02-14 19:40:59 +01:00
fincs
417d20b505 Fix broken C3D_LightEnvShadowMode implementation 2017-02-14 19:40:40 +01:00
fincs
ac755aa3ec Add some shadow-related texture functions:
- C3D_TexShadowParams: configure GPUREG_TEXUNIT0_SHADOW
- C3D_TexInitShadow: create shadow map texture
- C3D_TexInitShadowCube: as above, but for shadow cubemaps
2017-02-14 19:40:07 +01:00
fincs
82b9eea410 Refactor GPUREG_TEXUNIT_CONFIG state (in preparation of future changes) 2017-02-14 18:40:58 +01:00
fincs
73f4039a9c Deprecate c3d/renderbuffer.h (use framebuffer or renderqueue instead) 2017-02-14 18:35:37 +01:00
fincs
a382eeed2b Use framebuffers instead of renderbuffers in rendertargets, details:
- The color buffer is mandatory, and it can either be a simple buffer
  (whose allocation lifetime managed automatically by citro3d), or be
  linked to a texture
- The depth buffer is optional, and it can only be a simple buffer
- Added C3D_RenderTargetCreateFromTex
- Clear bits in C3D_RenderTargetSetClear now work properly
2017-02-14 18:34:14 +01:00
fincs
5c1d037fa2 Introduce framebuffer (light renderbuffer) infrastructure 2017-02-14 18:24:57 +01:00
fincs
15de0e300e Add support for cube textures, see below:
- Added C3D_TexCube structure for holding pointers to all 6 faces
- C3D_TexLoadImage accepts face number and mipmap level
- C3D_TexGenerateMipmap accepts face number
- Added functions (C3D_Tex*GetImagePtr) for accessing image data
- Now using GX to copy texture data to VRAM instead of failing
- Moved texunit setup code to texture.c
2017-02-12 00:14:04 +01:00
fincs
6ec42ae8a1 Calculate total mipmap texture size with geometric series formula 2017-02-11 18:29:41 +01:00
fincs
0fd245b171 Begin overhauling texture API, see details:
- Now supports multilevel data (LOD) used for mipmapping
- Basic mipmap generation (currently only for RGBA8 and RGB8 textures)
- Texture type can now be specified (TODO: support cube textures)
- Border color can also be specified now
- More flexibility in texture initialization parameters
2017-02-09 20:07:37 +01:00
fincs
2a1dc2ba87 Added C3D_FragOpShadow() 2017-02-09 19:59:46 +01:00
fincs
73aea35120 Add bIsZBuffer parameter to C3D_DepthMap 2017-02-09 19:59:31 +01:00
fincs
7a55e4554a Reset attribute configuration on shader program change 2017-02-09 19:58:05 +01:00
fincs
a91889f5ba Added C3D_FrameRate() for controlling output framerate 2017-02-09 19:57:02 +01:00
Michael Theall
3ae31adab4 Add doxygen support 2017-02-09 19:45:33 +01:00
fincs
a28fff9391 Correct C3D_DrawElements with GPU_TRIANGLES 2017-01-29 21:44:12 +01:00
fincs
c666893b2e Bump version for release 2017-01-16 16:45:09 +01:00
Thompson Lee
642545d2e2 Added Mtx_Add() and Mtx_Subtract(). (#28) 2016-09-12 00:23:21 +02:00
Thompson Lee
7960e832de Added Mtx_Diagonal(). (#27) 2016-09-11 23:40:10 +02:00
Thompson Lee
b32275ee94 Squashing all commits from the previous pull requests. #21, #22, and #23. (#26) 2016-08-30 21:18:37 +02:00
Thompson Lee
8a3982d625 Added Quat_FromPitchYawRoll() helper function. (#25)
Quickly converts pitch, yaw, and roll rotations to the Quaternion equivalent orientation, with optimized code.
2016-08-22 22:14:26 +02:00
Thompson Lee
ae0ce14c9d Enhancement: Mtx_Inverse() returns a non-zero determinant if the matrix passed in can be inverted, otherwise returns zero if the matrix is singular/degenerative. 2016-08-05 01:02:59 -05:00
Michael Theall
0dcc009ae3 Add gcov integration to test suite 2016-08-05 00:33:59 -05:00
Michael Theall
24548b03d1 Fix Mtx_LookAt 2016-08-05 00:33:59 -05:00
Thompson Lee
59b0311f48 Minor Fixes series
- Added a missing @param[in].
- Added @mtheall 's Mtx_Multiply() enhancement.
2016-08-05 00:19:55 -05:00
mtheall
dc4d81eea9 More additions and enhancements to math code, see details (#19)
Added C3D_AngleFromDegrees
Added FVec4_PerspDivide
Added LH option for projections
2016-08-04 21:23:28 +02:00
Thompson Lee
dde8877f38 Left-handed and Right-handed Look-At Matrix functions (#17) 2016-08-04 12:43:33 +02:00
fincs
8481109e15 Fix swapped near/far in Mtx_Ortho(Tilt) 2016-08-04 12:22:04 +02:00
mtheall
766def30a3 Optimized matrix math (#15)
Added non-tilt projections
Added quaternions
Added test framework
Created logo
2016-08-04 11:33:18 +02:00
Michael Theall
7b511a809d fix Mtx_Inverse 2016-08-03 00:52:42 -05:00
Thompson Lee
d7d5ba28a1 Added a Matrix Inverse Function (#14) 2016-07-31 13:20:36 +02:00