dynmap/DynmapCore/src/main/java/org/dynmap/hdmap/HDShaderState.java

63 lines
1.7 KiB
Java

package org.dynmap.hdmap;
import org.dynmap.Color;
import org.dynmap.utils.DynLongHashMap;
/**
* This interface is used to define the operational state of a renderer during raytracing
* All method should be considered performance critical
*/
public interface HDShaderState {
/**
* Get our shader
* @return shader
*/
HDShader getShader();
/**
* Get our lighting
* @return lighting
*/
HDLighting getLighting();
/**
* Get our map
* @return map
*/
HDMap getMap();
/**
* Reset renderer state for new ray - passes in pixel coordinate for ray
* @param ps - perspective state
*/
void reset(HDPerspectiveState ps);
/**
* Process next ray step - called for each block on route
* @param ps - perspective state
* @return true if ray is done, false if ray needs to continue
*/
boolean processBlock(HDPerspectiveState ps);
/**
* Ray ended - used to report that ray has exited map (called if renderer has not reported complete)
* @param ps - perspective state
*/
void rayFinished(HDPerspectiveState ps);
/**
* Get result color - get resulting color for ray
* @param c - object to store color value in
* @param index - index of color to request (renderer specific - 0=default, 1=day for night/day renderer
*/
void getRayColor(Color c, int index);
/**
* Clean up state object - called after last ray completed
*/
void cleanup();
/**
* Get CTM texture cache
* @return texture cache
*/
DynLongHashMap getCTMTextureCache();
/**
* Get lighting table
* @return array of lighting values
*/
int[] getLightingTable();
}