def METHOD_NAME(camera, render_source):
    params = ensure_code_unit_params(camera._get_sampler_params(render_source))
    params.update(transfer_function=render_source.transfer_function)
    params.update(num_samples=render_source.num_samples)
    args = (
        np.atleast_3d(params["vp_pos"]),
        np.atleast_3d(params["vp_dir"]),
        params["center"],
        params["bounds"],
        params["image"],
        params["x_vec"],
        params["y_vec"],
        params["width"],
        render_source.volume_method,
        params["num_samples"],
    )
    kwargs = {
        "lens_type": params["lens_type"],
    }
    if render_source.zbuffer is not None:
        kwargs["zbuffer"] = render_source.zbuffer.z
    else:
        kwargs["zbuffer"] = np.ones(params["image"].shape[:2], "float64")
    sampler = ProjectionSampler(*args, **kwargs)
    return sampler