From 3bbbe213de76b46d91b1bd3bbbdf49900a5a5185 Mon Sep 17 00:00:00 2001
From: Constantin Rahn <conz@vrchannel.de>
Date: Fri, 21 Jan 2011 17:52:36 +0000
Subject: [PATCH] Added some more parameter for Anti Aliasing

---
 render_povray/__init__.py | 31 +++++++++++++++++++++++--------
 render_povray/render.py   | 14 +++++++++-----
 render_povray/ui.py       | 17 ++++++++++++++---
 3 files changed, 46 insertions(+), 16 deletions(-)

diff --git a/render_povray/__init__.py b/render_povray/__init__.py
index 863d02133..6a4a56d7e 100644
--- a/render_povray/__init__.py
+++ b/render_povray/__init__.py
@@ -110,6 +110,18 @@ def register():
             name="Antialias Threshold", description="Tolerance for sub-pixels",
             min=0.0, max=1.0, soft_min=0.05, soft_max=0.5, default=0.1)
     
+    Scene.pov_jitter_enable = BoolProperty(
+            name="Jitter", description="Enable Jittering. Adds noise into the sampling process (it should be avoided to use jitter in animation).",
+            default=True)
+
+    Scene.pov_jitter_amount = FloatProperty(
+            name="Jitter Amount", description="Amount of jittering.",
+            min=0.0, max=1.0, soft_min=0.01, soft_max=1.0, default=1.0)
+    
+    Scene.pov_antialias_gamma = FloatProperty(
+            name="Antialias Gamma", description="POV-Ray compares gamma-adjusted values for super sampling. Antialias Gamma sets the Gamma before comparison.",
+            min=0.0, max=5.0, soft_min=0.01, soft_max=2.5, default=2.5)
+    
     Scene.pov_max_trace_level = IntProperty(
             name="Max Trace Level", description="Number of reflections/refractions allowed on ray path",
             min=1, max=256, default=5)
@@ -296,14 +308,17 @@ def unregister():
     del Scene.pov_media_color # MR
     del Scene.pov_baking_enable # MR
     del Scene.pov_max_trace_level # MR
-    del Scene.pov_antialias_enable # CR
-    del Scene.pov_antialias_method # CR 
-    del Scene.pov_antialias_depth # CR
-    del Scene.pov_antialias_threshold # CR
-    del Scene.pov_command_line_switches # CR
-    del Scene.pov_indentation_character # CR
-    del Scene.pov_indentation_spaces # CR
-    del Scene.pov_comments_enable # CR
+    del Scene.pov_antialias_enable  # CR
+    del Scene.pov_antialias_method  # CR 
+    del Scene.pov_antialias_depth  # CR
+    del Scene.pov_antialias_threshold  # CR
+    del Scene.pov_antialias_gamma  # CR
+    del Scene.pov_jitter_enable  # CR
+    del Scene.pov_jitter_amount  # CR
+    del Scene.pov_command_line_switches  # CR
+    del Scene.pov_indentation_character  # CR
+    del Scene.pov_indentation_spaces  # CR
+    del Scene.pov_comments_enable  # CR
     del Mat.pov_irid_enable # MR
     del Mat.pov_mirror_use_IOR # MR
     del Mat.pov_mirror_metallic # MR    
diff --git a/render_povray/render.py b/render_povray/render.py
index 31f90cd14..324bf3c1d 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -1410,8 +1410,9 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
     y = int(render.resolution_y * render.resolution_percentage * 0.01)
 
     file = open(filename_ini.name, 'w')
-    file.write("Input_File_Name='%s'\n" % filename_pov.name)
-    file.write("Output_File_Name='%s'\n" % filename_image.name)
+    file.write('Version=3.7\n')
+    file.write('Input_File_Name=\'%s\'\n' % filename_pov.name)
+    file.write('Output_File_Name=\'%s\'\n' % filename_image.name)
 
     file.write('Width=%d\n' % x)
     file.write('Height=%d\n' % y)
@@ -1437,15 +1438,18 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
         # aa_mapping = {'5': 2, '8': 3, '11': 4, '16': 5} # method 2 (recursive) with higher max subdiv forced because no mipmapping in POV-Ray needs higher sampling.
         method = {'0':1, '1':2}
         file.write('Antialias=on\n')
-        print("Method: " + str(scene.pov_antialias_method))
         file.write('Sampling_Method=%s\n' % method[scene.pov_antialias_method])
         file.write('Antialias_Depth=%d\n' % scene.pov_antialias_depth)
         file.write('Antialias_Threshold=%.3g\n' % scene.pov_antialias_threshold)
-        file.write('Jitter=off\n')#prevent animation flicker
+        file.write('Antialias_Gamma=%.3g\n' % scene.pov_antialias_gamma)
+        if scene.pov_jitter_enable:
+            file.write('Jitter=on\n')
+            file.write('Jitter_Amount=%3g\n' % scene.pov_jitter_amount)
+        else:
+            file.write('Jitter=off\n')#prevent animation flicker
  
     else:
         file.write('Antialias=off\n')
-    file.write('Version=3.7')
     #print('ini file closed %s' % file.closed)
     file.close()
     #print('ini file closed %s' % file.closed)
diff --git a/render_povray/ui.py b/render_povray/ui.py
index 27444ab3a..1e14519bb 100644
--- a/render_povray/ui.py
+++ b/render_povray/ui.py
@@ -303,12 +303,23 @@ class RENDER_PT_povray_antialias(RenderButtonsPanel, bpy.types.Panel):
         col = split.column()
         col.prop(scene, "pov_antialias_method", text="")
         col = split.column()
-       
+        col.prop(scene, "pov_jitter_enable", text="Jitter")
+      
         split = layout.split()
         col = split.column()
-        col.prop(scene, "pov_antialias_depth", text="Depth")
+        col.prop(scene, "pov_antialias_depth", text="AA Depth")
+        sub = split.column()
+        sub.prop(scene, "pov_jitter_amount", text="Jitter Amount")
+        if scene.pov_jitter_enable:
+            sub.enabled = True
+        else:
+            sub.enabled = False
+
+        split = layout.split()
+        col = split.column()
+        col.prop(scene, "pov_antialias_threshold", text="AA Threshold")
         col = split.column()
-        col.prop(scene, "pov_antialias_threshold", text="Threshold")
+        col.prop(scene, "pov_antialias_gamma", text="AA Gamma")    
         
         
 class RENDER_PT_povray_radiosity(RenderButtonsPanel, bpy.types.Panel):
-- 
GitLab