[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17519] branches/soc-2008-mxcurioni/source /blender/freestyle/intern/app_blender: Added changes for implementing antialiasing.
Tamito Kajiyama
rd6t-kjym at asahi-net.or.jp
Thu Nov 20 21:42:39 CET 2008
Revision: 17519
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17519
Author: kjym3
Date: 2008-11-20 21:42:38 +0100 (Thu, 20 Nov 2008)
Log Message:
-----------
Added changes for implementing antialiasing. The OSA settings for the internal
renderer are respected by the Freestyle renderer as well.
Modified Paths:
--------------
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.h
Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp 2008-11-20 20:41:53 UTC (rev 17518)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp 2008-11-20 20:42:38 UTC (rev 17519)
@@ -39,8 +39,13 @@
extern "C" {
#include "BLI_blenlib.h"
+#include "BLI_jitter.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
+#if 1 // FRS_antialiasing
+#include "BKE_global.h"
+#include "DNA_scene_types.h"
+#endif
}
// glut.h must be included last to avoid a conflict with stdlib.h on vc .net 2003 and 2005
@@ -439,6 +444,23 @@
glPopAttrib();
}
+#if 1 // FRS_antialiasing
+
+void AppGLWidget::init_jit(int osa)
+{
+ static float cache[32][2]; /* simple caching */
+ static int lastjit= 0;
+
+ if(lastjit != osa) {
+ memset(cache, 0, sizeof(cache));
+ BLI_initjit(cache[0], osa);
+ }
+ lastjit= osa;
+ memcpy(jit, cache, sizeof(jit));
+}
+
+#endif
+
void AppGLWidget::Draw2DScene(SceneVisitor *iRenderer)
{
static bool first = 1;
@@ -473,7 +495,29 @@
canvas->init();
first = false;
}
- canvas->Render(canvas->renderer());
+#if 1 // FRS_antialiasing
+ if (!(G.scene->r.mode & R_OSA)) {
+#endif
+ canvas->Render(canvas->renderer());
+#if 1 // FRS_antialiasing
+ } else {
+ init_jit(G.scene->r.osa);
+ GLint viewport[4];
+ glGetIntegerv(GL_VIEWPORT, viewport);
+ glClear(GL_ACCUM_BUFFER_BIT);
+ for (int jitter = 0; jitter < G.scene->r.osa; jitter++) {
+ cout << "Antialiasing " << jitter+1 << "/" << G.scene->r.osa << endl;
+ glClear(GL_COLOR_BUFFER_BIT);
+ glPushMatrix();
+ glTranslatef(jit[jitter][0]*(viewport[2]+viewport[3])/viewport[2],
+ jit[jitter][1]*(viewport[2]+viewport[3])/viewport[3], 0.0);
+ canvas->Render(canvas->renderer());
+ glPopMatrix();
+ glAccum(GL_ACCUM, 1.0/G.scene->r.osa);
+ }
+ glAccum(GL_RETURN, 1.0);
+ }
+#endif
}
glLoadIdentity();
Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.h
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.h 2008-11-20 20:41:53 UTC (rev 17518)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.h 2008-11-20 20:42:38 UTC (rev 17519)
@@ -542,7 +542,11 @@
bool _record;
+#if 1 // FRS_antialiasing
+ float jit[32][2];
+ void init_jit(int osa);
+#endif
};
More information about the Bf-blender-cvs
mailing list