Skip to content

Commit 6fa38ce

Browse files
committed
Merge branch 'appleseedhq-IECoreAppleseed'
2 parents 9bc5407 + ebc81f3 commit 6fa38ce

32 files changed

+1107
-150
lines changed

contrib/IECoreAppleseed/Changes

-34
This file was deleted.

contrib/IECoreAppleseed/include/IECoreAppleseed/ColorAlgo.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define IECOREAPPLESEED_COLORALGO_H
3737

3838
#include <string>
39+
#include <utility>
3940

4041
#include "renderer/api/color.h"
4142

@@ -45,7 +46,7 @@ namespace IECoreAppleseed
4546
namespace ColorAlgo
4647
{
4748

48-
std::string createColorEntity( renderer::ColorContainer &colorContainer, const Imath::C3f &color, const std::string &name );
49+
std::pair<std::string, renderer::ColorEntity*> createColorEntity( renderer::ColorContainer &colorContainer, const Imath::C3f &color, const std::string &name );
4950

5051
} // namespace ColorAlgo
5152

contrib/IECoreAppleseed/include/IECoreAppleseed/LogTarget.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ class IECoreLogTarget : public foundation::ILogTarget
4848

4949
virtual void release();
5050

51-
virtual void write( const foundation::LogMessage::Category category,
52-
const char* file, const size_t line, const char* header, const char* message);
51+
virtual void write( const foundation::LogMessage::Category category, const char* file, const size_t line, const char* header, const char* message );
5352

5453
};
5554

contrib/IECoreAppleseed/include/IECoreAppleseed/MeshAlgo.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,17 @@
3737

3838
#include "renderer/api/object.h"
3939

40-
#include "IECore/MeshPrimitive.h"
41-
40+
#include "IECore/Object.h"
4241

4342
namespace IECoreAppleseed
4443
{
4544

4645
namespace MeshAlgo
4746
{
4847

49-
renderer::MeshObject *convert( IECore::MeshPrimitive *mesh );
48+
renderer::MeshObject *convert( const IECore::Object *primitive );
49+
renderer::MeshObject *convert( const std::vector<const IECore::Object *> &samples );
50+
renderer::MeshObject *convert( const std::vector<IECore::ObjectPtr> &samples );
5051

5152
} // namespace MeshAlgo
5253

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
//////////////////////////////////////////////////////////////////////////
2+
//
3+
// Copyright (c) 2016, Esteban Tovagliari. All rights reserved.
4+
//
5+
// Redistribution and use in source and binary forms, with or without
6+
// modification, are permitted provided that the following conditions are
7+
// met:
8+
//
9+
// * Redistributions of source code must retain the above copyright
10+
// notice, this list of conditions and the following disclaimer.
11+
//
12+
// * Redistributions in binary form must reproduce the above copyright
13+
// notice, this list of conditions and the following disclaimer in the
14+
// documentation and/or other materials provided with the distribution.
15+
//
16+
// * Neither the name of Image Engine Design nor the names of any
17+
// other contributors to this software may be used to endorse or
18+
// promote products derived from this software without specific prior
19+
// written permission.
20+
//
21+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22+
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23+
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24+
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25+
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26+
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27+
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28+
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29+
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30+
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31+
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32+
//
33+
//////////////////////////////////////////////////////////////////////////
34+
35+
#ifndef IECOREAPPLESEED_MOTIONALGO_H
36+
#define IECOREAPPLESEED_MOTIONALGO_H
37+
38+
#include "IECore/Object.h"
39+
40+
#include "foundation/math/scalar.h"
41+
42+
namespace IECoreAppleseed
43+
{
44+
45+
namespace MotionAlgo
46+
{
47+
48+
// appleseed requires a power of two number of primitive deformation samples,
49+
// equally spaced between shutter open / close times.
50+
// check the time samples and return true if they satisfy the conditions.
51+
template< typename TimeContainer >
52+
bool checkTimeSamples( const TimeContainer &times, float shutterOpenTime, float shutterCloseTime )
53+
{
54+
// check that the number of samples is a power of 2.
55+
if( !foundation::is_pow2( times.size() ) )
56+
{
57+
return false;
58+
}
59+
60+
const float eps = 0.01f;
61+
62+
// check that the first and last samples match the shutter times.
63+
if( !foundation::feq( shutterOpenTime, *times.begin(), eps ) )
64+
{
65+
return false;
66+
}
67+
68+
if( !foundation::feq( shutterCloseTime, *times.rbegin(), eps ) )
69+
{
70+
return false;
71+
}
72+
73+
// check that the samples are equally spaced.
74+
typename TimeContainer::const_iterator next( times.begin() );
75+
typename TimeContainer::const_iterator it( next++ );
76+
77+
float sampleInterval = *next - *it;
78+
79+
for( typename TimeContainer::const_iterator e( times.end() ) ; next != e; ++next )
80+
{
81+
if( !foundation::feq( sampleInterval, *next - *it, eps ) )
82+
{
83+
return false;
84+
}
85+
86+
it = next;
87+
}
88+
89+
return true;
90+
}
91+
92+
// Resample a set of primitive keys so that number of samples
93+
// is a power of 2, equally spaced between the shutter open and close times.
94+
void resamplePrimitiveKeys( const std::vector<const IECore::Object *> &samples, const std::vector<float> &times, float shutterOpenTime, float shutterCloseTime, std::vector<IECore::ObjectPtr> &resampledKeys );
95+
96+
} // namespace MotionAlgo
97+
98+
} // namespace IECoreAppleseed
99+
100+
#endif // IECOREAPPLESEED_MOTIONALGO_H
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//////////////////////////////////////////////////////////////////////////
2+
//
3+
// Copyright (c) 2016, Esteban Tovagliari. All rights reserved.
4+
//
5+
// Redistribution and use in source and binary forms, with or without
6+
// modification, are permitted provided that the following conditions are
7+
// met:
8+
//
9+
// * Redistributions of source code must retain the above copyright
10+
// notice, this list of conditions and the following disclaimer.
11+
//
12+
// * Redistributions in binary form must reproduce the above copyright
13+
// notice, this list of conditions and the following disclaimer in the
14+
// documentation and/or other materials provided with the distribution.
15+
//
16+
// * Neither the name of Image Engine Design nor the names of any
17+
// other contributors to this software may be used to endorse or
18+
// promote products derived from this software without specific prior
19+
// written permission.
20+
//
21+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22+
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23+
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24+
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25+
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26+
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27+
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28+
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29+
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30+
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31+
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32+
//
33+
//////////////////////////////////////////////////////////////////////////
34+
35+
#ifndef IECOREAPPLESEED_OBJECTALGO_H
36+
#define IECOREAPPLESEED_OBJECTALGO_H
37+
38+
#include "IECore/Object.h"
39+
40+
#include "renderer/api/object.h"
41+
42+
#include <vector>
43+
44+
namespace IECoreAppleseed
45+
{
46+
47+
namespace ObjectAlgo
48+
{
49+
50+
bool isPrimitiveSupported( const IECore::Object *primitive );
51+
52+
renderer::Object *convert( const IECore::Object *primitive );
53+
renderer::Object *convert( const std::vector<const IECore::Object *> &samples, const std::vector<float> &times, float shutterOpenTime, float shutterCloseTime );
54+
55+
} // namespace ObjectAlgo
56+
57+
} // namespace IECoreAppleseed
58+
59+
#endif // IECOREAPPLESEED_OBJECTALGO_H

contrib/IECoreAppleseed/include/IECoreAppleseed/ParameterAlgo.h

+6-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@
3535
#ifndef IECOREAPPLESEED_PARAMETERALGO_H
3636
#define IECOREAPPLESEED_PARAMETERALGO_H
3737

38+
#include "IECore/CompoundData.h"
39+
3840
#include "renderer/api/utility.h"
3941

40-
#include "IECore/CompoundData.h"
42+
#include <string>
4143

4244
namespace IECoreAppleseed
4345
{
@@ -46,13 +48,14 @@ namespace ParameterAlgo
4648
{
4749

4850
std::string dataToString( const IECore::Data *value );
49-
5051
std::string dataToString( IECore::ConstDataPtr value );
5152

52-
void setParam( const std::string &name, const IECore::Data *value, renderer::ParamArray& params );
53+
void setParam( const std::string &name, const IECore::Data *value, renderer::ParamArray &params );
5354

5455
renderer::ParamArray convertParams( const IECore::CompoundDataMap &parameters );
5556

57+
renderer::ParamArray convertShaderParameters( const IECore::CompoundDataMap &parameters, std::string &handle );
58+
5659
} // namespace ParameterAlgo
5760

5861
} // namespace IECoreAppleseed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
//////////////////////////////////////////////////////////////////////////
2+
//
3+
// Copyright (c) 2016, Esteban Tovagliari. All rights reserved.
4+
//
5+
// Redistribution and use in source and binary forms, with or without
6+
// modification, are permitted provided that the following conditions are
7+
// met:
8+
//
9+
// * Redistributions of source code must retain the above copyright
10+
// notice, this list of conditions and the following disclaimer.
11+
//
12+
// * Redistributions in binary form must reproduce the above copyright
13+
// notice, this list of conditions and the following disclaimer in the
14+
// documentation and/or other materials provided with the distribution.
15+
//
16+
// * Neither the name of Image Engine Design nor the names of any
17+
// other contributors to this software may be used to endorse or
18+
// promote products derived from this software without specific prior
19+
// written permission.
20+
//
21+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22+
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23+
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24+
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25+
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26+
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27+
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28+
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29+
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30+
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31+
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32+
//
33+
//////////////////////////////////////////////////////////////////////////
34+
35+
#ifndef IECOREAPPLESEED_PROGRESS_TILE_CALLBACK_H
36+
#define IECOREAPPLESEED_PROGRESS_TILE_CALLBACK_H
37+
38+
#include "boost/thread/mutex.hpp"
39+
40+
#include "foundation/utility/autoreleaseptr.h"
41+
42+
#include "renderer/api/rendering.h"
43+
44+
namespace IECoreAppleseed
45+
{
46+
47+
/// An appleseed tile callback that logs the render progress
48+
/// using appleseed logging system.
49+
class ProgressTileCallback : public renderer::TileCallbackBase
50+
{
51+
52+
public :
53+
54+
ProgressTileCallback();
55+
56+
virtual void release();
57+
58+
virtual void post_render_tile( const renderer::Frame *frame, const size_t tileX, const size_t tileY );
59+
60+
protected :
61+
62+
void log_progress( const renderer::Frame *frame, const size_t tileX, const size_t tileY );
63+
64+
boost::mutex m_mutex;
65+
size_t m_renderedPixels;
66+
};
67+
68+
class ProgressTileCallbackFactory : public renderer::ITileCallbackFactory
69+
{
70+
71+
public :
72+
73+
ProgressTileCallbackFactory();
74+
75+
virtual void release();
76+
77+
virtual renderer::ITileCallback* create();
78+
79+
private :
80+
81+
foundation::auto_release_ptr<renderer::ITileCallback> m_callback;
82+
};
83+
84+
} // namespace IECoreAppleseed
85+
86+
#endif // IECOREAPPLESEED_PROGRESS_TILE_CALLBACK_H

0 commit comments

Comments
 (0)