如何在JavaFX画布中对大区域进行凹凸贴图

如何在JavaFX画布中对大区域进行凹凸贴图,javafx,light,bump-mapping,Javafx,Light,Bump Mapping,我想使用JavaFX在画布上应用一些照明效果GraphicsContext。首先,我使用Lighting.bumpInput传递一个用于照明的静态凹凸贴图。但是,这只会照亮画布的某个区域。 因此,现在我手动进行照明,首先在画布上绘制所有凹凸贴图,然后应用照明效果,最后将所有原始图像与BlendMode.MULTIPLY和照亮的凹凸贴图混合在一起。 这看起来不像第一种方法那么好,但它确实起到了作用。 现在仍然存在一个问题,即照明效果(点光源)应用于整个画布,而不管区域有多大。 现在我的问题是,在

我想使用JavaFX在画布上应用一些照明效果
GraphicsContext
。首先,我使用
Lighting.bumpInput
传递一个用于照明的静态凹凸贴图。但是,这只会照亮画布的某个区域。
因此,现在我手动进行照明,首先在画布上绘制所有凹凸贴图,然后应用照明效果,最后将所有原始图像与
BlendMode.MULTIPLY
和照亮的凹凸贴图混合在一起。 这看起来不像第一种方法那么好,但它确实起到了作用。 现在仍然存在一个问题,即照明效果(点光源)应用于整个画布,而不管区域有多大。

现在我的问题是,在JavaFX中,什么是只将照明应用于画布上特定区域的正确方法?要定义点光源的半径吗

public void start(Stage primaryStage) {
   Image texture = new Image("...");
   Image bumpMap = new Image("...");

   Light.Point pointLight = new Light.Point(256, 256, 25, Color.WHITE);
   Lighting lighting = new Lighting(pointLight);

   Canvas canvas = new Canvas(1280, 800);
   canvas.getGraphicsContext().setGlobalBlendMode(BlendMode.MULTIPLY);
   canvas.getGraphicsContext().drawImage(bumpMap, 0, 0);
   canvas.getGraphicsContext().applyEffect(lighting);
   canvas.getGraphicsContext().drawImage(texture, 0, 0);

   Scene scene = new Scene(new AnchorPane(canvas), 1280, 800);
   primaryStage.setScene(scene);
   primaryStage.show();
}