|
| | TexProjectClass (void) |
| |
| virtual | ~TexProjectClass (void) |
| |
| void | Set_Texture_Size (int size) |
| |
| int | Get_Texture_Size (void) |
| |
| void | Init_Multiplicative (void) |
| |
| void | Init_Additive (void) |
| |
| void | Set_Intensity (float intensity, bool immediate=false) |
| |
| float | Get_Intensity (void) |
| |
| bool | Is_Intensity_Zero (void) |
| |
| void | Set_Attenuation (float attenuation) |
| |
| float | Get_Attenuation (void) |
| |
| void | Enable_Attenuation (bool onoff) |
| |
| bool | Is_Attenuation_Enabled (void) |
| |
| MaterialPassClass * | Peek_Material_Pass (void) |
| |
| void | Enable_Affect_Dynamic_Objects (bool onoff) |
| |
| bool | Is_Affect_Dynamic_Objects_Enabled (void) |
| |
| void | Enable_Affect_Static_Objects (bool onoff) |
| |
| bool | Is_Affect_Static_Objects_Enabled (void) |
| |
| void | Enable_Depth_Gradient (bool onoff) |
| |
| bool | Is_Depth_Gradient_Enabled (bool onoff) |
| |
| virtual void | Set_Perspective_Projection (float hfov, float vfov, float znear, float zfar) |
| |
| virtual void | Set_Ortho_Projection (float xmin, float xmax, float ymin, float ymax, float znear, float zfar) |
| |
| void | Set_Texture (TextureClass *texture) |
| |
| TextureClass * | Get_Texture (void) const |
| |
| TextureClass * | Peek_Texture (void) const |
| |
| void | Set_DepthStencilBuffer (ZTextureClass *ztex) |
| |
| ZTextureClass * | Get_DepthStencilBuffer () const |
| |
| ZTextureClass * | Peek_DepthStencilBuffer () const |
| |
| bool | Compute_Perspective_Projection (RenderObjClass *obj, const Vector3 &lightpos, float znear=-1.0f, float zfar=-1.0f) |
| |
| bool | Compute_Perspective_Projection (const AABoxClass &obj_box, const Matrix3D &tm, const Vector3 &lightpos, float znear=-1.0f, float zfar=-1.0f) |
| |
| bool | Compute_Ortho_Projection (RenderObjClass *obj, const Vector3 &lightdir, float znear=-1.0f, float zfar=-1.0f) |
| |
| bool | Compute_Ortho_Projection (const AABoxClass &obj_box, const Matrix3D &tm, const Vector3 &lightdir, float znear=-1.0f, float zfar=-1.0f) |
| |
| bool | Needs_Render_Target (void) |
| |
| void | Set_Render_Target (TextureClass *render_target, ZTextureClass *ztarget=NULL) |
| |
| TextureClass * | Peek_Render_Target (TextureClass **rtarget=NULL, ZTextureClass **ztarget=NULL) |
| |
| bool | Compute_Texture (RenderObjClass *model, SpecialRenderInfoClass *context) |
| |
| virtual void | Pre_Render_Update (const Matrix3D &camera) |
| |
| virtual void * | Get_Projection_Object_ID (void) const |
| |
| | ProjectorClass (void) |
| |
| virtual | ~ProjectorClass (void) |
| |
| virtual void | Set_Transform (const Matrix3D &tm) |
| |
| virtual const Matrix3D & | Get_Transform (void) const |
| |
| const OBBoxClass & | Get_Bounding_Volume (void) const |
| |
| void | Compute_Texture_Coordinate (const Vector3 &point, Vector3 *set_stq) |
| |
| MatrixMapperClass * | Peek_Mapper () const |
| |
| | CullableClass (void) |
| |
| virtual | ~CullableClass (void) |
| |
| WWINLINE const AABoxClass & | Get_Cull_Box (void) const |
| |
| void | Set_Cull_Box (const AABoxClass &box, bool just_loaded=false) |
| |
| void | Set_Culling_System (CullSystemClass *sys) |
| |
| CullSystemClass * | Get_Culling_System (void) const |
| |
| WWINLINE void | Set_Cull_Link (CullLinkClass *c) |
| |
| WWINLINE CullLinkClass * | Get_Cull_Link (void) const |
| |
| | RefCountClass (void) |
| |
| | RefCountClass (const RefCountClass &) |
| |
| void | Add_Ref (void) const |
| |
| WWINLINE void | Release_Ref (void) const |
| |
| int | Num_Refs (void) const |
| |
| virtual void | Delete_This (void) |
| |
| | MultiListObjectClass (void) |
| |
| virtual | ~MultiListObjectClass (void) |
| |
| MultiListNodeClass * | Get_List_Node () const |
| |
| void | Set_List_Node (MultiListNodeClass *node) |
| |
TexProjectClass This class is used to project textures onto object in the world. It contains a pointer to the texture to be projected, a bounding volume for the projection, and a material pass which can perform the projection.
Design Goals:
- Texture Projectors should be easy to place in the world and move around. solution: Store the bounding volume and any other parameters in a coordinate system local to the projector. Update the world-space cache whenever needed. The automatically generated shadow texture projectors are a special case subset of the general texture projection code. For this reason, a local bounding volume will be stored and its world-space equivalent will be updated whenever needed.
- Texture projectors need to be compatible with the culling systems. solution: inherit the Cullable interface.
- Texture projectors need to be quickly pulled in and out of many lists during the rendering process. solution: list system similar to PhysListClass? I really need to templatize this.
- Dynamic Texture projectors need to be updated in stages. Update/recompute only the bounding volume first, then defer computing the actual texture until it is determined that the volume falls into the frustum and is applied to at least one object. solution: Code the bounding volume/projection paramter generation separate from the texture generation code. A derived texture projection object. Let texture projectors know about the object they are projecting so that they can have that object rendered from the desired viewpoint. Need a 'Dirty' flag and a pointer to a 'parent' object. Perhaps separate this code into a ShadowProjectClass since shadows are the only case I can think of that need the ability to re-render their 'parent' object. Everything else should be a static texture-map either generated 'artistically' or generated off-line.
Definition at line 104 of file texproject.h.