filter: Add "MSAA" filter to CommonFilters
This provides an easy way to enable MSAA for the offscreen color buffer only without having to enable it on the main window. When using this filter, it is important to have framebuffer-multisample turned off in Config.prc.
This commit is contained in:
parent
4d2a45f124
commit
a71b417aec
|
|
@ -26,7 +26,7 @@ from .filterCopy import COPY
|
|||
from .filterDown4 import DOWN_4
|
||||
from panda3d.core import LVecBase4, LPoint2
|
||||
from panda3d.core import Filename
|
||||
from panda3d.core import AuxBitplaneAttrib
|
||||
from panda3d.core import AuxBitplaneAttrib, AntialiasAttrib
|
||||
from panda3d.core import Texture, Shader, ATSNone
|
||||
from panda3d.core import FrameBufferProperties
|
||||
from panda3d.core import getDefaultCoordinateSystem, CS_zup_right, CS_zup_left
|
||||
|
|
@ -189,11 +189,22 @@ class CommonFilters:
|
|||
fbprops.setSrgbColor(False)
|
||||
clamping = False
|
||||
|
||||
if "MSAA" in configuration:
|
||||
if fbprops is None:
|
||||
fbprops = FrameBufferProperties()
|
||||
fbprops.setMultisamples(configuration["MSAA"].samples)
|
||||
|
||||
self.finalQuad = self.manager.renderSceneInto(textures = self.textures, auxbits=auxbits, fbprops=fbprops, clamping=clamping)
|
||||
if (self.finalQuad == None):
|
||||
self.cleanup()
|
||||
return False
|
||||
|
||||
if "MSAA" in configuration:
|
||||
camNode = self.manager.camera.node()
|
||||
state = camNode.getInitialState()
|
||||
state.setAttrib(AntialiasAttrib.make(AntialiasAttrib.M_multisample))
|
||||
camNode.setInitialState(state)
|
||||
|
||||
if ("BlurSharpen" in configuration):
|
||||
blur0=self.textures["blur0"]
|
||||
blur1=self.textures["blur1"]
|
||||
|
|
@ -454,6 +465,19 @@ class CommonFilters:
|
|||
if task != None:
|
||||
return task.cont
|
||||
|
||||
def setMSAA(self, samples):
|
||||
fullrebuild = "MSAA" not in self.configuration or self.configuration["MSAA"].samples != samples
|
||||
newconfig = FilterConfig()
|
||||
newconfig.samples = samples
|
||||
self.configuration["MSAA"] = newconfig
|
||||
return self.reconfigure(fullrebuild, "MSAA")
|
||||
|
||||
def delMSAA(self):
|
||||
if "MSAA" in self.configuration:
|
||||
del self.configuration["MSAA"]
|
||||
return self.reconfigure(True, "MSAA")
|
||||
return True
|
||||
|
||||
def setCartoonInk(self, separation=1, color=(0, 0, 0, 1)):
|
||||
fullrebuild = (("CartoonInk" in self.configuration) == False)
|
||||
newconfig = FilterConfig()
|
||||
|
|
@ -673,6 +697,8 @@ class CommonFilters:
|
|||
return True
|
||||
|
||||
#snake_case alias:
|
||||
set_msaa = setMSAA
|
||||
del_msaa = delMSAA
|
||||
del_cartoon_ink = delCartoonInk
|
||||
set_half_pixel_shift = setHalfPixelShift
|
||||
del_half_pixel_shift = delHalfPixelShift
|
||||
|
|
|
|||
Loading…
Reference in New Issue