mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-17 11:15:39 +00:00
* These come from long ago when using PyCharm with not as good type checking and with renderdoc module stubs that were incomplete so needed help identifying types.
99 lines
4.7 KiB
Python
99 lines
4.7 KiB
Python
import renderdoc as rd
|
|
import rdtest
|
|
|
|
|
|
class GL_Renderbuffer_Zoo(rdtest.TestCase):
|
|
demos_test_name = 'GL_Renderbuffer_Zoo'
|
|
|
|
def check_capture(self):
|
|
action = self.find_action('glDraw')
|
|
|
|
while action is not None:
|
|
self.controller.SetFrameEvent(action.eventId, True)
|
|
|
|
self.check_triangle(fore=[0.2, 0.75, 0.2, 1.0])
|
|
|
|
pipe = self.controller.GetPipelineState()
|
|
depth = pipe.GetDepthTarget()
|
|
vp = pipe.GetViewport(0)
|
|
|
|
id = pipe.GetOutputTargets()[0].resource
|
|
|
|
mn, mx = self.controller.GetMinMax(id, rd.Subresource(), rd.CompType.Typeless)
|
|
|
|
if not rdtest.value_compare(mn.floatValue, [0.2, 0.2, 0.2, 1.0], eps=1.0/255.0):
|
|
raise rdtest.TestFailureException(
|
|
"Minimum color values {} are not as expected".format(mn.floatValue))
|
|
|
|
if not rdtest.value_compare(mx.floatValue, [0.2, 0.75, 0.2, 1.0], eps=1.0/255.0):
|
|
raise rdtest.TestFailureException(
|
|
"Maximum color values {} are not as expected".format(mx.floatValue))
|
|
|
|
hist = self.controller.GetHistogram(id, rd.Subresource(), rd.CompType.Typeless, 0.199, 0.75,
|
|
(False, True, False, False))
|
|
|
|
if hist[0] == 0 or hist[-1] == 0 or any([x > 0 for x in hist[1:-1]]):
|
|
raise rdtest.TestFailureException(
|
|
"Green histogram didn't return expected values, values should have landed in first or last bucket")
|
|
|
|
rdtest.log.success('Color Renderbuffer at action {} is working as expected'.format(action.eventId))
|
|
|
|
if depth.resource != rd.ResourceId():
|
|
val = self.controller.PickPixel(depth.resource, int(0.5 * vp.width), int(0.5 * vp.height),
|
|
rd.Subresource(), rd.CompType.Typeless)
|
|
|
|
if not rdtest.value_compare(val.floatValue[0], 0.75):
|
|
raise rdtest.TestFailureException(
|
|
"Picked value {} in triangle for depth doesn't match expectation".format(val))
|
|
|
|
mn, mx = self.controller.GetMinMax(depth.resource, rd.Subresource(), rd.CompType.Typeless)
|
|
hist = self.controller.GetHistogram(depth.resource, rd.Subresource(),
|
|
rd.CompType.Typeless, 0.75, 0.9, (True, False, False, False))
|
|
|
|
if not rdtest.value_compare(mn.floatValue[0], 0.75):
|
|
raise rdtest.TestFailureException(
|
|
"Minimum depth values {} are not as expected".format(mn.floatValue))
|
|
|
|
if not rdtest.value_compare(mx.floatValue[0], 0.9):
|
|
raise rdtest.TestFailureException(
|
|
"Maximum depth values {} are not as expected".format(mx.floatValue))
|
|
|
|
if hist[0] == 0 or hist[-1] == 0 or any([x > 0 for x in hist[1:-1]]):
|
|
raise rdtest.TestFailureException(
|
|
"Depth histogram didn't return expected values, values should have landed in first or last bucket")
|
|
|
|
rdtest.log.success('Depth Renderbuffer at action {} is working as expected'.format(action.eventId))
|
|
|
|
tex_details = self.get_texture(id)
|
|
|
|
if tex_details.msSamp > 1:
|
|
samples = []
|
|
for i in range(tex_details.msSamp):
|
|
samples.append(self.controller.GetTextureData(id, rd.Subresource(0, 0, i)))
|
|
|
|
for i in range(tex_details.msSamp):
|
|
for j in range(tex_details.msSamp):
|
|
if i == j:
|
|
continue
|
|
|
|
if samples[i] == samples[j]:
|
|
save_data = rd.TextureSave()
|
|
save_data.resourceId = id
|
|
save_data.destType = rd.FileType.PNG
|
|
save_data.slice.sliceIndex = 0
|
|
save_data.mip = 0
|
|
|
|
img_path0 = rdtest.get_tmp_path('sample{}.png'.format(i))
|
|
img_path1 = rdtest.get_tmp_path('sample{}.png'.format(j))
|
|
|
|
save_data.sample.sampleIndex = i
|
|
self.controller.SaveTexture(save_data, img_path0)
|
|
save_data.sample.sampleIndex = j
|
|
self.controller.SaveTexture(save_data, img_path1)
|
|
|
|
raise rdtest.TestFailureException("Two MSAA samples returned the same data", img_path0, img_path1)
|
|
|
|
action = self.find_action('glDraw', action.eventId+1)
|
|
|
|
rdtest.log.success('All renderbuffers checked and rendered correctly')
|