Solved How to output BaseBitmap with ShaderData plugin

Hello PluginCafe! 🙂

I hope the title is self-explanatory.
Unfortunately, there is almost 0 info about ShaderData plugins on the forum.

It is worth mentioning that I already figured out how to load textures into Xbitmap from the disk, but this is not exactly what I need.
Currently, I'm trying to somehow load Pre-Defined Bitmap image Xbitmap (or maybe I have to load it into Xbase) but with no luck.

    def InitRender(self, sh, irs) :

        bmp = (c4d.bitmaps.InitResourceBitmap(c4d.RESOURCEIMAGE_OK))
        self.texture = c4d.BaseShader(c4d.Xbitmap)

        # Not sure but if I'm doing this correctly but probably here I need to somehow load my bmp.

        self.texture.InitRender(irs)
        return c4d.INITRENDERRESULT_OK

    def FreeRender(self, sh) :
        self.texture.FreeRender()
        self.texture = None

    def Output(self, sh, cd) :
        res = self.texture.Sample(cd)
        return res

Hi Merkvilson, thanks for reaching out us.

If the final intent is to simply get BaseBitmapinformation to be returned by your shader, rather than sampling a Xbitmap shader I suggest instead to simply query the color information by using BaseBitmap::GetPixel and eventually apply color space transformation.

    def Output(self, sh, cd) :
        x = int(cd.p.x * self.bitmap.GetBw())
        y = int(cd.p.y * self.bitmap.GetBh())
        col = self.bitmap.GetPixel(x, y)
        return c4d.Vector(float(col[0]/256.0), float(col[1]/256.0), float(col[2]/256.0))

Best, Riccardo