Skip to content

Instantly share code, notes, and snippets.

@zomb-676
Last active April 30, 2025 11:00
Show Gist options
  • Save zomb-676/d5b8e6d58fc095d64edc179b0d3c4ef2 to your computer and use it in GitHub Desktop.
Save zomb-676/d5b8e6d58fc095d64edc179b0d3c4ef2 to your computer and use it in GitHub Desktop.

我画的东西他妈的到底去哪里了?

在Event Browser内找到你要判定的draw call
如果难以找到,使用gl(Push/Pop)DebugLabel使用

顶点着色器工作是否符合预期?

  1. 在Texture View中选择Ouputs中要观察的Frame,然后将Overlay模式调节到Wirframe Mesh或HighLight Drawcall观察有无明显特征,如果有则判定测试通过即可
  2. MeshViewer中,选择Preivew中的Vs Out,将Contraols切换为Flycam,观察线框是否处于摄像机中,观察线框模型与绘制目标模型线框是否一致,多半是PoseStack的位置错了或者调用了没有使用matrix4f的pos方法
  3. 观察顶点属性输入数据是否符合预期,多用于判定附加了自定义顶点属性的情况
  4. 在PipeLine State中选择VTX,观察Vertex Attribute Foramts情况,问题种类极多,需要逐个判定index是否和attribute layout填写一致,是否enable,format是否正常,格式R16G16指代有两个数据,每个数据是16位宽,Buffer Slot,相同则代表从同一个buff中获取数据,然后观察Buffers,Element只在使用了DrawElement此类的drawCall时出现,里面的数据是顶点索引,stride指上下两个数据间的步长,offset指从buffer的哪个位置起可以读到第一个数据,Divisor指顶点属性除数,配合drawInstance系列使用,多半是0和1
  5. 点击Buffer可以转到Resorce Inspector内,然后点击右上角的View Content可以查看数据,这里需手动指定解析数据格式的Format
  6. 如果着色器使用了sampler类型,uniform,UBO等buffer backend的数据,则在VS界面查看数据是否正确

判定测试通过

直接使用https://github.com/baldurk/renderdoc-contrib/blob/main/baldurk/whereismydraw/README.md 支持大部分测试

  1. Overlay模式调节各个测试判定即可,红色部分则为测试失败
  2. Pipeline State中,选择FB,观察Target Blends中,输出目标的Write Mask状态
  3. Pipeline State中,选择FS,点击Edit,编辑着色器,去除所有discard()调用,直接定义所有输出颜色,点击apply,再次观察
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment