diff --git a/qrenderdoc/python36.natvis b/qrenderdoc/python36.natvis
new file mode 100644
index 000000000..84440cdaf
--- /dev/null
+++ b/qrenderdoc/python36.natvis
@@ -0,0 +1,322 @@
+
+
+
+
+ {*me_key} = {*me_value}
+
+
+ me_value
+
+
+
+
+
+
+
+
+ None
+
+
+
+ True
+ False
+
+
+
+ Python module {*((python36.dll!PyModuleObject *)this)->md_name}
+
+
+
+
+ Python function {*((python36.dll!PyFunctionObject *)this)->func_name}
+
+
+
+
+ C Function {((python36.dll!PyCFunctionObject *)this)->m_ml->ml_name,s}
+
+
+
+
+ Python bytes object {((python36.dll!PyBytesObject *)this)->ob_base.ob_size} bytes
+
+
+
+
+ Python dict, {((python36.dll!PyDictObject *)this)->ma_used} items
+
+
+
+
+ Python list, {((python36.dll!PyListObject *)this)->ob_base.ob_size} items
+
+
+
+
+ Python tuple, {((python36.dll!PyTupleObject *)this)->ob_base.ob_size} items
+
+
+
+
+ {((python36.dll!PyFloatObject *)this)->ob_fval}
+
+
+
+
+
+
+
+
+ {((python36.dll!PyLongObject *)this)->ob_digit[0]}
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<30)
+ }
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<30) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[2])<<60)
+ }
+
+
+
+
+
+
+ {((python36.dll!PyLongObject *)this)->ob_digit[0]}
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<15)
+ }
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<15) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[2])<<30)
+ }
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<15) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[2])<<30) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[3])<<45)
+ }
+
+
+
+ {
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[0])) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[1])<<15) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[2])<<30) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[3])<<45) +
+ (uint64_t(((python36.dll!PyLongObject *)this)->ob_digit[4])<<60)
+ }
+
+
+
+
+ Python Big Integer
+
+
+
+
+
+
+
+ {(char *)(((python36.dll!PyASCIIObject *)this) + 1),s}
+
+
+ Non compact ASCII string
+
+
+
+
+
+
+ Type Object
+
+
+
+
+ Unknown {ob_type->tp_name,s} object
+
+
+
+
+
+ (char *)(((python36.dll!PyASCIIObject *)this) + 1),s
+
+
+
+
+
+
+ - ob_refcnt
+ - ob_type
+
+
+ -
+ ((python36.dll!PyModuleObject *)this)->md_name
+
+ -
+ ((python36.dll!PyModuleObject *)this)->md_dict
+
+ -
+ (python36.dll!PyModuleObject *)this
+
+
+
+ -
+ ((python36.dll!PyFunctionObject *)this)->func_name
+
+ -
+ (python36.dll!PyFunctionObject *)this
+
+
+
+ -
+ (python36.dll!PyCFunctionObject *)this
+
+
+
+ -
+ (python36.dll!PyDictObject *)this
+
+ -
+ ((python36.dll!PyDictObject *)this)->ma_used
+
+
+
+ ((python36.dll!PyDictObject *)this)->ma_used
+
+ (python36.dll!PyDictKeyEntry *)(((python36.dll!PyDictObject *)this)->ma_keys->dk_indices.as_1 + (((python36.dll!PyDictObject *)this)->ma_keys->dk_size * 1))
+
+
+ (python36.dll!PyDictKeyEntry *)(((python36.dll!PyDictObject *)this)->ma_keys->dk_indices.as_1 + (((python36.dll!PyDictObject *)this)->ma_keys->dk_size * 2))
+
+
+ (python36.dll!PyDictKeyEntry *)(((python36.dll!PyDictObject *)this)->ma_keys->dk_indices.as_1 + (((python36.dll!PyDictObject *)this)->ma_keys->dk_size * 4))
+
+
+ (python36.dll!PyDictKeyEntry *)(((python36.dll!PyDictObject *)this)->ma_keys->dk_indices.as_1 + (((python36.dll!PyDictObject *)this)->ma_keys->dk_size * 8))
+
+
+
+
+ ((python36.dll!PyDictObject *)this)->ma_used
+ ((python36.dll!PyDictObject *)this)->ma_values
+
+
+
+
+
+ -
+ ((python36.dll!PyListObject *)this)->ob_base.ob_size
+
+
+ ((python36.dll!PyListObject *)this)->ob_base.ob_size
+
+ ((python36.dll!PyListObject *)this)->ob_item
+
+
+
+
+ -
+ ((python36.dll!PyTupleObject *)this)->ob_base.ob_size
+
+
+ ((python36.dll!PyTupleObject *)this)->ob_base.ob_size
+
+ ((python36.dll!PyTupleObject *)this)->ob_item
+
+
+
+
+ -
+ ((python36.dll!PyLongObject *)this)->ob_base.ob_size
+
+
+ ((python36.dll!PyLongObject *)this)->ob_base.ob_size
+
+ ((python36.dll!PyLongObject *)this)->ob_digit
+
+
+
+
+ -
+ (char *)((python36.dll!PyBytesObject *)this)->ob_sval
+
+
+
+
+ -
+ ((python36.dll!PyASCIIObject *)this)->state
+
+
+
+ -
+ (python36.dll!PyASCIIObject *)this
+
+ -
+ (char *)(((python36.dll!PyASCIIObject *)this) + 1)
+
+
+
+ -
+ (python36.dll!PyCompactUnicodeObject *)this
+
+
+
+ -
+ (python36.dll!PyUnicodeObject *)this
+
+
+
+
+
+
\ No newline at end of file
diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj
index 77f6be357..b087de4dc 100644
--- a/qrenderdoc/qrenderdoc_local.vcxproj
+++ b/qrenderdoc/qrenderdoc_local.vcxproj
@@ -1865,6 +1865,9 @@ IF %ERRORLEVEL% NEQ 0 (echo ====================================================
+
+
+
\ No newline at end of file
diff --git a/qrenderdoc/qrenderdoc_local.vcxproj.filters b/qrenderdoc/qrenderdoc_local.vcxproj.filters
index 6ce23d43f..00522047e 100644
--- a/qrenderdoc/qrenderdoc_local.vcxproj.filters
+++ b/qrenderdoc/qrenderdoc_local.vcxproj.filters
@@ -1772,4 +1772,7 @@
Resources\Files
+
+
+
\ No newline at end of file