mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-23 10:50:26 +01:00
92 lines
2.8 KiB
C
92 lines
2.8 KiB
C
|
/*
|
||
|
* LWSDK Header File
|
||
|
* Copyright 1999, NewTek, Inc.
|
||
|
*
|
||
|
* LWSHADER.H -- LightWave Surface Shaders
|
||
|
*/
|
||
|
#ifndef LWSDK_SHADER_H
|
||
|
#define LWSDK_SHADER_H
|
||
|
|
||
|
#include <lwrender.h>
|
||
|
|
||
|
#define LWSHADER_HCLASS "ShaderHandler"
|
||
|
#define LWSHADER_ICLASS "ShaderInterface"
|
||
|
#define LWSHADER_VERSION 4
|
||
|
|
||
|
|
||
|
typedef struct st_LWShaderAccess {
|
||
|
int sx, sy;
|
||
|
double oPos[3], wPos[3];
|
||
|
double gNorm[3];
|
||
|
double spotSize;
|
||
|
double raySource[3];
|
||
|
double rayLength;
|
||
|
double cosine;
|
||
|
double oXfrm[9], wXfrm[9];
|
||
|
LWItemID objID;
|
||
|
int polNum;
|
||
|
|
||
|
double wNorm[3];
|
||
|
double color[3];
|
||
|
double luminous;
|
||
|
double diffuse;
|
||
|
double specular;
|
||
|
double mirror;
|
||
|
double transparency;
|
||
|
double eta;
|
||
|
double roughness;
|
||
|
|
||
|
LWIlluminateFunc *illuminate;
|
||
|
LWRayTraceFunc *rayTrace;
|
||
|
LWRayCastFunc *rayCast;
|
||
|
LWRayShadeFunc *rayShade;
|
||
|
|
||
|
int flags;
|
||
|
int bounces;
|
||
|
LWItemID sourceID;
|
||
|
double wNorm0[3];
|
||
|
double bumpHeight;
|
||
|
double translucency;
|
||
|
double colorHL;
|
||
|
double colorFL;
|
||
|
double addTransparency;
|
||
|
double difSharpness;
|
||
|
|
||
|
LWPntID verts[4]; // surrounding vertex IDs
|
||
|
float weights[4]; // vertex weigths
|
||
|
float vertsWPos[4][3]; // vertex world positions
|
||
|
LWPolID polygon; // polygon ID
|
||
|
|
||
|
double replacement_percentage;
|
||
|
double replacement_color[3];
|
||
|
double reflectionBlur;
|
||
|
double refractionBlur;
|
||
|
} LWShaderAccess;
|
||
|
|
||
|
#define LWSAF_SHADOW (1<<0)
|
||
|
|
||
|
|
||
|
typedef struct st_LWShaderHandler {
|
||
|
LWInstanceFuncs *inst;
|
||
|
LWItemFuncs *item;
|
||
|
LWRenderFuncs *rend;
|
||
|
void (*evaluate) (LWInstance, LWShaderAccess *);
|
||
|
unsigned int (*flags) (LWInstance);
|
||
|
} LWShaderHandler;
|
||
|
|
||
|
#define LWSHF_NORMAL (1<<0)
|
||
|
#define LWSHF_COLOR (1<<1)
|
||
|
#define LWSHF_LUMINOUS (1<<2)
|
||
|
#define LWSHF_DIFFUSE (1<<3)
|
||
|
#define LWSHF_SPECULAR (1<<4)
|
||
|
#define LWSHF_MIRROR (1<<5)
|
||
|
#define LWSHF_TRANSP (1<<6)
|
||
|
#define LWSHF_ETA (1<<7)
|
||
|
#define LWSHF_ROUGH (1<<8)
|
||
|
#define LWSHF_TRANSLUCENT (1<<9)
|
||
|
#define LWSHF_RAYTRACE (1<<10)
|
||
|
|
||
|
|
||
|
#endif
|
||
|
|