First of all, I would like to point out that perhaps my problem is related to another, probably similar, which I also reported today:
I’m having trouble combining projected textures and "gl-version 3 2"
.
I am trying to follow this tutorial:
https://docs.panda3d.org/1.10/python/programming/texturing/projected-textures
When I don’t enable newer versions of GLSL (i.e. I don’t set "gl-version 3 2"
in the configuration), everything is fine.
Code:
from direct.actor import Actor
from direct.showbase.ShowBase import ShowBase
from panda3d.core import *
# loadPrcFileData("", "gl-version 3 2")
base = ShowBase()
base.setBackgroundColor(1, 1, 1, 1)
ripple = Actor.Actor('ripple.egg')
ripple.reparentTo(base.render)
ripple.setScale(10)
ripple.pose('animation', 17)
dl = DirectionalLight('dl')
dlnp = base.camera.attachNewNode(dl)
ripple.setLight(dlnp)
proj = base.render.attachNewNode(LensNode('proj'))
lens = PerspectiveLens()
proj.node().setLens(lens)
proj.node().showFrustum()
proj.find('frustum').setColor(1, 0, 0, 1)
camModel = base.loader.loadModel('camera.egg')
camModel.reparentTo(proj)
proj.reparentTo(base.render)
proj.setPos(1.5, -7.3, 2.9)
proj.setHpr(22, -15, 0)
tex = base.loader.loadTexture('maps/envir-reeds.png')
tex.setWrapU(SamplerState.WMBorderColor)
tex.setWrapV(SamplerState.WMBorderColor)
tex.setBorderColor((1, 1, 1, 0))
ts = TextureStage('ts')
ts.setSort(1)
ts.setMode(TextureStage.MDecal)
ripple.projectTexture(ts, tex, proj)
base.disableMouse()
base.camera.setPos(-7.8, -22.4, 0)
base.camera.setHpr(-21, 0, 0)
base.graphicsEngine.renderFrame()
base.screenshot('projected_bamboo.jpg', defaultFilename=0)
Effect:
Now let’s assume that I enable newer versions of GLSL (that is, I set "gl-version 3 2"
in the configuration). Note that for now, I don’t even set any custom shaders, I just enabled the newer GLSL. Unfortunately, texture projecting doesn’t work this time.
Code:
from direct.actor import Actor
from direct.showbase.ShowBase import ShowBase
from panda3d.core import *
loadPrcFileData("", "gl-version 3 2")
base = ShowBase()
base.setBackgroundColor(1, 1, 1, 1)
ripple = Actor.Actor('ripple.egg')
ripple.reparentTo(base.render)
ripple.setScale(10)
ripple.pose('animation', 17)
dl = DirectionalLight('dl')
dlnp = base.camera.attachNewNode(dl)
ripple.setLight(dlnp)
proj = base.render.attachNewNode(LensNode('proj'))
lens = PerspectiveLens()
proj.node().setLens(lens)
proj.node().showFrustum()
proj.find('frustum').setColor(1, 0, 0, 1)
camModel = base.loader.loadModel('camera.egg')
camModel.reparentTo(proj)
proj.reparentTo(base.render)
proj.setPos(1.5, -7.3, 2.9)
proj.setHpr(22, -15, 0)
tex = base.loader.loadTexture('maps/envir-reeds.png')
tex.setWrapU(SamplerState.WMBorderColor)
tex.setWrapV(SamplerState.WMBorderColor)
tex.setBorderColor((1, 1, 1, 0))
ts = TextureStage('ts')
ts.setSort(1)
ts.setMode(TextureStage.MDecal)
ripple.projectTexture(ts, tex, proj)
base.disableMouse()
base.camera.setPos(-7.8, -22.4, 0)
base.camera.setHpr(-21, 0, 0)
base.graphicsEngine.renderFrame()
base.screenshot('projected_bamboo.jpg', defaultFilename=0)
Effect:
I have no error messages on the console.