OpenGL GLSL Cel Shading和Outline算法

den*_*niz 7 opengl glsl outline

我已经使用glsl成功实现了一个cel着色器.但我的问题是关于概述所有内容,互联网上每个opengl的例子都很旧,与现有技术不匹配,所以技术速度慢......所以我无论如何都无法在glsl中找到它.我想到了一些想法,比如将最不密集的区域着色为黑色,但是对于gl_Vertex,gl_Position和眼睛位置甚至没有足够的解释.所以,由于每种技术都太老了,我终于决定向某人询问这个大纲问题.

And*_*nck 9

我会在zbuffer上使用某种边缘检测滤波器(可能与颜色缓冲区上的边缘检测结合),然后用(反转)结果调制帧缓冲.最常见的边缘检测滤波器之一是sobel算子:

http://en.wikipedia.org/wiki/Sobel_operator

编辑:这样做的另一种便宜的方法是在渲染普通网格之前绘制网格的黑色副本,其中剔除面向倒置并且顶点在法线方向上稍微移动.这可能就是他们在XIII中所做的,我也很确定这是在Jet Set Radio中完成的.

编辑2:如果您希望轮廓的厚度不变,无论距观察者的距离如何,您都应该缩放使用此距离移动顶点的量.