historical/toontown-classic.git/panda/include/paramTexture.I
2024-01-16 11:20:27 -06:00

129 lines
2.7 KiB
Text

/**
* 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."
*
* @file paramTexture.I
* @author rdb
* @date 2014-12-11
*/
/**
* Creates a new ParamTextureSampler storing the given texture and sampler
* objects.
*/
INLINE ParamTextureSampler::
ParamTextureSampler(Texture *tex, const SamplerState &sampler) :
_texture(tex),
_sampler(sampler)
{
}
/**
* Returns Texture::get_class_type(), even though it technically stores more
* than just a Texture.
*/
INLINE TypeHandle ParamTextureSampler::
get_value_type() const {
return Texture::get_class_type();
}
/**
* Retrieves the texture stored in the parameter.
*/
INLINE Texture *ParamTextureSampler::
get_texture() const {
return _texture;
}
/**
* Retrieves the sampler state stored in the parameter.
*/
INLINE const SamplerState &ParamTextureSampler::
get_sampler() const {
return _sampler;
}
/**
* Creates a new ParamTextureImage storing the given texture and image binding
* parameters.
*/
INLINE ParamTextureImage::
ParamTextureImage(Texture *tex, bool read, bool write, int z, int n) :
_texture(tex),
_access(0),
_bind_level(std::min(n, 127)),
_bind_layer(z)
{
if (read) {
_access |= A_read;
}
if (write) {
_access |= A_write;
}
if (z < 0) {
_bind_layer = 0;
_access |= A_layered;
}
}
/**
* Returns Texture::get_class_type(), even though it technically stores more
* than just a Texture.
*/
INLINE TypeHandle ParamTextureImage::
get_value_type() const {
return Texture::get_class_type();
}
/**
* Retrieves the texture stored in the parameter.
*/
INLINE Texture *ParamTextureImage::
get_texture() const {
return _texture;
}
/**
* Returns true if this image should be bound with read access enabled.
*/
INLINE bool ParamTextureImage::
has_read_access() const {
return (_access & A_read) != 0;
}
/**
* Returns true if this image should be bound with write access enabled.
*/
INLINE bool ParamTextureImage::
has_write_access() const {
return (_access & A_write) != 0;
}
/**
* Returns true if all layers of this image should be bound simultaneously.
*/
INLINE bool ParamTextureImage::
get_bind_layered() const {
return (_access & A_layered) != 0;
}
/**
* Returns the image level that should be bound.
*/
INLINE int ParamTextureImage::
get_bind_level() const {
return _bind_level;
}
/**
* Returns the image layer that should be bound. This is undefined if
* get_bind_layered() returns false.
*/
INLINE int ParamTextureImage::
get_bind_layer() const {
return _bind_layer;
}