89 Commits

Author SHA1 Message Date
baldurk 274dbcd4ef Remove unnecessary double-calls of OnLogfileLoaded(). Refs #267 2016-05-04 21:52:31 +02:00
baldurk 14781e4287 Handle invalid vulkan vertex input setup, and display better in pipeview 2016-04-17 17:50:45 +02:00
baldurk 70b99a4412 Remove antiquated 'multiple frames in one capture' support.
* Cleans up the code a bunch, this support is unlikely to ever return
  and if it does it will need a rethink anyway.
2016-04-13 00:28:09 +02:00
baldurk 009bfb2c74 Where possible apply offs/len knowledge when viewing buffers. Refs #224 2016-04-02 15:39:27 +02:00
baldurk 5869e9c1bf Handle baseVertex as signed, separately from vertexOffset. Refs #228 2016-03-24 18:50:04 +01:00
baldurk 729404b225 Fix potential deadlock accessing ByteOffset on render thread 2016-02-24 00:42:59 +01:00
baldurk 839ee08768 Don't create unnecessary output for non-mesh buffer viewers 2016-02-23 22:24:45 +01:00
baldurk df714b3f47 Make buffer viewer more robust to being closed while fetching data 2016-02-08 21:11:46 +01:00
baldurk 6655d525d1 Don't enforce max row count for mesh viewer 2016-02-07 18:51:45 +01:00
baldurk 2e0ffa7813 Batch update copyright years everywhere 2016-02-07 18:50:45 +01:00
baldurk 794065eedb Crash fix 2016-02-07 18:49:43 +01:00
baldurk 7aca368cc7 Fix resourceformat check (was 'working' before because null != null) 2016-02-07 18:49:39 +01:00
baldurk a3bf43c852 Tweak cell header merging in buffer viewer to merge all columns
* There's some kind of flickering/lag that goes on when you horizontally
  scroll but it's minor and I can't figure out how to fix it for now.
2016-02-07 18:49:32 +01:00
baldurk c06aeebd3a Crash fix for non-indexed meshes 2016-02-07 18:48:00 +01:00
baldurk 48a03ae21f Only fetch the PostVS data needed for this draw, not the whole buffer
* For instanced draws where there are many instance and each instance is
  a lot, this saves fetching a *ton* of redundant data.
2016-02-07 18:47:45 +01:00
baldurk 793d2690c4 Be more aggressive with null'ing/disposing old data, to garbage collect 2016-02-07 18:47:44 +01:00
baldurk 0b61607cc7 When loading a log, default back to buffer view showing VSIn 2016-02-07 18:47:35 +01:00
baldurk bd5a6752e2 Use viewport for guessing aspect ratio, not dimensions of depth/colour 2016-02-07 18:47:33 +01:00
baldurk 101d780956 Handle post-vs data being padded/aligned instead of tightly packed 2016-02-07 18:47:33 +01:00
baldurk 8818de4524 Use vertex stride from PostVS data if we're reading it 2016-02-07 18:47:32 +01:00
baldurk 5c309d9d34 Refactor handling of resources/binding to be much more flexible
* This will handle the new vulkan binding model with multiple descriptor
  sets and arrays of objects in each binding. It also makes a few tidy
  ups and improvements to other APIs in presentation - will e.g. now
  show thumbnails for vertex and other stages.
2016-02-07 18:46:40 +01:00
baldurk ba8114936e Render mesh displays as 4x MSAA to make the line rendering a bit nicer 2016-02-07 18:46:23 +01:00
baldurk 879df25850 Implement mesh rendering (wireframe and solid) 2016-02-07 18:46:10 +01:00
baldurk 36d2ffd988 Handle super small buffers in buffer viewer without displaying nothing 2016-02-07 18:45:14 +01:00
baldurk 4fe74824b1 Switch buffer offsets and lengths to 64-bit, downcast only where needed 2016-02-07 18:45:06 +01:00
baldurk 8eddd387d7 Add vulkan pipeline state viewer based on D3D11 viewer 2016-02-07 18:41:35 +01:00
baldurk 8b7a025853 Refactor BGRA formats to not be special (so allow any BGRA format)
* Also add ASTC and D16S8 types while in the neighbourhood
2015-11-29 22:05:26 +01:00
baldurk 00ba48ef4c default to VS IN as primary, instead of just bailing 2015-11-18 22:30:46 +01:00
baldurk e441bff833 Display NaNs correctly in buffer viewer cells 2015-11-18 22:28:47 +01:00
baldurk 10c461d7d3 In mesh viewer, vertex picking and enabling sync will sync up the views 2015-11-12 09:40:41 +01:00
baldurk 1b99bb3dfc Add warning and clip display if a buffer will be too large
* E.g. if a huge buffer is displayed as just floats, there could be
  100s of millions of rows. Instead, we clip to 200,000 (anecdotally
  where things start getting a bit laggy on the control), and allow
  advancing through sections of the buffer at a time.
2015-10-10 10:56:53 +02:00
baldurk d16a8024d5 Make sure we have some fallback for locating position element. Refs #149
* If no position element is selected at all that's really confusing, so
  worst case we just pick the first attribute.
* Making it intuitive/obvious that you can change which attribute is
  displayed as mesh - that's a different problem.
2015-09-12 17:30:35 +02:00
baldurk 726a937312 Check against gridview being disposed (from crash report) 2015-08-24 20:06:01 +02:00
baldurk 2967a8a5ce Catch overflow exception handling bounding box 2015-07-24 00:16:45 +02:00
baldurk 43bc6f836f Tidy up which controls can be used at which stage (tess on or off) 2015-07-15 21:37:59 +02:00
baldurk e40ab9261a Handle edge-case where input layout bytecode doesn't use every element 2015-07-14 21:53:36 +02:00
baldurk f6527107dc Add try {} catch to handle exceptions thrown from IO operations 2015-07-07 19:06:31 +02:00
baldurk 4c988e9e3a Better arcball controls in the mesh viewer
* Tweaked flycam a bit too, but not much.
* Refactored the API/C# side camera classes to avoid exposing a ton of
  stuff just to do relative rotations in the arcball via quaternions.
2015-07-07 15:38:00 +02:00
baldurk 4444da212d Handle bounding boxes of 1 and 2 component types properly 2015-07-07 10:17:58 +02:00
baldurk dd9aff3890 Implement right click to pick vertices in the mesh viewer. Refs #139 2015-07-07 10:02:36 +02:00
baldurk edda31248f Render bounding box around mesh, centre & scale arcball on bbox
* The arcball lookat position can also be dragged with alt-click or
  middle click.
* Also supports other elements as position not just magically-selected
  "POSITION" element.
2015-07-06 19:58:45 +02:00
baldurk b23db183b6 Bugfix for raw buffer data not being properly filled out in mesh view 2015-07-06 19:46:59 +02:00
baldurk 63824680ea GS output never uses an index buffer (so mesh preview wasn't rendering) 2015-04-25 13:48:57 +02:00
baldurk e35fc400dd Make sure to handle debugging 'invalid' indices
* Crash upload fix
* If a vertex is the strip restart index (displayed as "-1") or is
  reading out of bounds of the index buffer (displayed as "-") then we
  should still allow vertex debugging to go ahead, as if the index were
  just 0.
2015-04-21 21:00:51 +02:00
baldurk 95f4011bcb Add option to favour monospaced font for all data. Refs #118
* The option will enable monospaced fonts for all data displays, like
  the list of events, API calls, etc as well as pipeline displays, entry
  of filename/directory in the capture window and many other places.
  Pure UI labelling etc mostly still stays as a serif font.
* A few sizes of controls were tweaked (like headers in the pipeline
  windows) so that they didn't just barely overflow with the larger
  font.
* While looking at this, it became obvious that buffer viewers and
  constant bufferviewers should always display in monospaced regardless,
  so that has been changed.
2015-04-09 21:49:03 +01:00
baldurk 1f9918a7c8 Fix some crashes and bad handling of indices
* If buffer wasn't a multiple of 4, a Buffer.BlockCopy call could crash
* Unsigned byte indices (for GL) weren't supported
* Post-transform index buffer was assumed to just be uints, but in fact
  it is the same size as the drawcall's existing indices.
2015-03-20 20:52:31 +00:00
baldurk e7307455f6 Fix a crash if vertex input is instanced, with instance rate of 0
* In this case, every input takes the first index, need to avoid divide
  by 0 error.
2015-03-11 08:04:19 +00:00
baldurk c3e381a76a Remap entire index buffer for post-vs data, instead of just shifting
* Previously for post VS data we could maintain the index buffer by just
  doing the stream-out/transform feedback for a point list with each
  unique index. To maintain the index buffer we padded out any gaps in
  the indices with a single value, so that we could just shift the
  indices. This causes severe problems though if the indices start at 0
  and contain an invalid value like 0xcccccccc - we'd allocate a huge
  array and perform a massively wasteful streamout.
* Instead, we just stream out on the tightly packed list of unique
  indices, then remap each 'real' index to where it is in the tightly
  packed output buffer.
2015-03-10 21:05:59 +00:00
baldurk ce20926f20 Try and be defensive about lack of index data
* ArgumentException thrown from BlockCopy seen in a crash upload, and
  it might be because of an empty or null buffer returned, maybe.
2015-02-12 21:36:46 +00:00
baldurk 8938c71853 Texture buffers now default to viewing in the buffer not texture viewer
* The pipeline state windows will open up the buffer viewer instead of
  the texture viewer to show the contents of texture buffers.
2015-02-12 21:15:02 +00:00