‘OpenGL’ 分类的存档
在fragment shader中获得表面法线
2019年9月10日
评论已被关闭
在做某些效果,比如flat shade的时候希望能获得表面的法线,而不是顶点法线插值的结果。要在shader中读取面法线,除了从外部传入面法线外,可以使用dfdx和dfdy构建面法线。
封装OpenGL API的要点
2019年9月10日
评论已被关闭
在于将OpenGL从抽象的状态机变为具体化的配置方法。比如对draw call的配置,纹理的配置,shader的配置。
分类: OpenGL
采样时决定Minify和Magnify的方法
2019年9月10日
评论已被关闭
OpenGL允许设置纹理的过滤,分为GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER两种。如果采样点的像素被认为是Minify了的,则用GL_TEXTURE_MIN_FILTER,如果是为认为是Magnify了的,用GL_TEXTURE_MAG_FILTER,决定用哪一个和mipmap无关,mipmap的三线性过滤通过_MIPMAP_NEAREAST和_MIPMAP_LINEAR决定。默认情况下,GL_TEXTURE_MAG_FILTER 的过滤方式是GL_LINEAR,GL_TEXTURE_MIN_FILTER 的过滤方式是GL_NEAREST_MIPMAP_LINEAR。
Mipmap LOD的计算
2019年9月9日
评论已被关闭
现在的GPU在光栅化后不是逐像素单个渲染,而是分成2x2=4个的像素分块,每个线程处理4个。之所以这样处理是为了保存像素的偏导数信息,在计算mipmap等级和面法线等时候很有用。
纹理采样和过滤
2019年9月7日
评论已被关闭
GPU使用线性插值得到的UV,从纹理中采样得到颜色,并在屏幕上重建。由于纹理的Texel是离散的,而UV是连续的浮点值,在采样纹理颜色时,要从离散的texel中得到最终得结果,这和其他采样如音频类似。纹理是对自然采样得到的离散结果,在屏幕上重建要使用各类过滤方法,以达到尽可能的还原自然。