使用GLSL在屏幕上不同区域着色以识别mip map级别

5

我不想在这篇文章中贴出太多的代码。我有一个主文件、片元着色器文件和一个顶点着色器文件。

我需要知道应该采取哪些步骤来根据mipmap级别对屏幕进行着色?也就是说,询问mipmap级别的循环应该放在哪里,然后根据级别设置颜色。我不知道在哪里实现这个或者如何实现,一个简单的例子就足够了。谢谢。


也许我只是太蠢了,但我不知道你想做什么。你是想手动更改mipmap,使每个mipmap具有不同的颜色吗?还是你想找出片段着色器中正在使用哪个mipmap级别? - Hannesh
老实说,我不知道,我被分配了一个程序,我的任务之一是“5.通过以不同颜色着色屏幕的不同Mip Map级别。” - Luke Evans
3个回答

1

你应该为每个级别创建一个不同颜色的纹理,然后在片段程序中检索该颜色。也可以使用dFdx(texcoord.x)dFdy(texcoord.y)计算它。


谢谢,你让它听起来很容易。但是你能更具体一些吗?我是个新手。 - Luke Evans
1
浮点数 mip = log2(max(dFdx(Texcoord.x)*texSizeX,dFdy(Texcoord.y)*texSizeY)); - Damon

1

就像tibur所说的那样,一个简单的方法是使用调试纹理,每个级别都有不同的颜色,如此处所示。

现在,如果您需要手动计算mipmap级别(通常是浮点值),这是另一回事,因为您将需要导数,但是这里应该能帮助您入门。


谢谢。如果有简单的方法的话,我需要这么做。但是我毫无头绪,我的讲师很糟糕,也找不到任何让我理解的资料,例如:“在 Y 函数中放置 X 命令”。 - Luke Evans

1

这两张图片概括了我想要做的事情。我只需要一些通用代码来实现它。 - Luke Evans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接