open_toontown_panda3d/panda/src/grutil/fisheyeMaker.I

86 lines
3.5 KiB
Plaintext

// Filename: fisheyeMaker.I
// Created by: drose (3Oct05)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Function: FisheyeMaker::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE FisheyeMaker::
FisheyeMaker(const string &name) : Namable(name) {
reset();
}
////////////////////////////////////////////////////////////////////
// Function: FisheyeMaker::Destructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE FisheyeMaker::
~FisheyeMaker() {
}
////////////////////////////////////////////////////////////////////
// Function: FisheyeMaker::set_num_vertices
// Access: Public
// Description: Specifies the approximate number of vertices to be
// used to generate the rose. This is the approximate
// number of vertices that will be located within the
// rose's unit circle, not counting the inscribing
// square (if any). The actual number of vertices used
// may be +/- 25% of this value.
////////////////////////////////////////////////////////////////////
INLINE void FisheyeMaker::
set_num_vertices(int num_vertices) {
_num_vertices = num_vertices;
}
////////////////////////////////////////////////////////////////////
// Function: FisheyeMaker::set_square_inscribed
// Access: Public
// Description: Sets the flag that indicates whether the rose should
// be inscribed within a square. When this is true, an
// additional square is generated to inscribed the
// circular rose, with the indicated "radius" (the sides
// of the square will be 2 * square_radius). The
// texture coordinates of the square will uniformly map
// to the back pole of the cube map.
//
// This is mainly useful to provide a good uniform
// background color for a sphere map so that it does not
// have a sharp circular edge that might produce
// artifacts due to numerical imprecision when mapping.
////////////////////////////////////////////////////////////////////
INLINE void FisheyeMaker::
set_square_inscribed(bool square_inscribed, float square_radius) {
_square_inscribed = square_inscribed;
_square_radius = square_radius;
}
////////////////////////////////////////////////////////////////////
// Function: FisheyeMaker::set_reflection
// Access: Public
// Description: Sets the flag indicating whether the texture image
// should be mirrored (true) or normal (false). When
// this is true, the 3-D texture coordinates will be
// reversed so that the image is appropriate for a
// reflection. This is the best choice for generating a
// sphere map from a cube map. The default is false.
////////////////////////////////////////////////////////////////////
INLINE void FisheyeMaker::
set_reflection(bool reflection) {
_reflect = (reflection) ? -1.0 : 1.0;
}