⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lightsource.java

📁 Sunflow是一个照片级的渲染系统
💻 JAVA
字号:
package org.sunflow.core;

import org.sunflow.image.Color;
import org.sunflow.math.Point3;
import org.sunflow.math.Vector3;

/**
 * This interface is used to represent any light emitting primitive. It permits
 * efficient sampling of direct illumination and photon shooting.
 */
public interface LightSource extends RenderObject {
    /**
     * Get the maximum number of samples that can be taken from this light
     * source. This is currently only used for statistics reporting.
     * 
     * @return maximum number of samples to be taken from this light source
     */
    public int getNumSamples();

    /**
     * Samples the light source to compute direct illumination. Light samples
     * can be created using the {@link LightSample} class and added to the
     * current {@link ShadingState}. This method is responsible for the
     * shooting of shadow rays which allows for non-physical lights that don't
     * cast shadows. It is recommended that only a single shadow ray be shot if
     * {@link ShadingState#getDiffuseDepth()} is greater than 0. This avoids an
     * exponential number of shadow rays from being traced.
     * 
     * @param state current state, including point to be shaded
     * @see LightSample
     */
    public void getSamples(ShadingState state);

    /**
     * Gets a photon to emit from this light source by setting each of the
     * arguments. The two sampling parameters are points on the unit square that
     * can be used to sample a position and/or direction for the emitted photon.
     * 
     * @param randX1 sampling parameter
     * @param randY1 sampling parameter
     * @param randX2 sampling parameter
     * @param randY2 sampling parameter
     * @param p position to shoot the photon from
     * @param dir direction to shoot the photon in
     * @param power power of the photon
     */
    public void getPhoton(double randX1, double randY1, double randX2, double randY2, Point3 p, Vector3 dir, Color power);

    /**
     * Get the total power emitted by this light source. Lights that have 0
     * power will not emit any photons.
     * 
     * @return light source power
     */
    public float getPower();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -