Skip to content

Commit 5374fba

Browse files
authored
Merge pull request #446 from jammm/pbrt-hip-upstream-pr1
Add PBRT_CPU_GPU in some signatures;Move OptiX
2 parents 867721d + 5a28e28 commit 5374fba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+333
-335
lines changed

CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -694,17 +694,17 @@ SET (PBRT_UTIL_SOURCE_HEADERS
694694

695695
if (PBRT_CUDA_ENABLED)
696696
set (PBRT_GPU_SOURCE
697-
src/pbrt/gpu/aggregate.cpp
698-
src/pbrt/gpu/denoiser.cpp
697+
src/pbrt/gpu/optix/aggregate.cpp
698+
src/pbrt/gpu/optix/denoiser.cpp
699699
src/pbrt/gpu/memory.cpp
700700
src/pbrt/gpu/util.cpp
701701
)
702702
set (PBRT_GPU_SOURCE_HEADERS
703-
src/pbrt/gpu/aggregate.h
703+
src/pbrt/gpu/optix/aggregate.h
704704
src/pbrt/gpu/cudagl.h
705-
src/pbrt/gpu/denoiser.h
705+
src/pbrt/gpu/optix/denoiser.h
706706
src/pbrt/gpu/memory.h
707-
src/pbrt/gpu/optix.h
707+
src/pbrt/gpu/optix/optix.h
708708
src/pbrt/gpu/util.h
709709
)
710710

@@ -770,7 +770,7 @@ if (PBRT_CUDA_ENABLED)
770770
PROPERTIES LANGUAGE CUDA
771771
)
772772

773-
cuda_compile_and_embed (PBRT_EMBEDDED_PTX src/pbrt/gpu/optix.cu optix.cu)
773+
cuda_compile_and_embed (PBRT_EMBEDDED_PTX src/pbrt/gpu/optix/optix.cu optix.cu)
774774
endif ()
775775

776776
source_group ("Source Files" FILES ${PBRT_SOURCE})

src/pbrt/bssrdf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ PBRT_CPU_GPU inline void SubsurfaceFromDiffuse(const BSSRDFTable &t,
288288
}
289289
}
290290

291-
inline pstd::optional<BSSRDFProbeSegment> BSSRDF::SampleSp(Float u1, Point2f u2) const {
291+
PBRT_CPU_GPU inline pstd::optional<BSSRDFProbeSegment> BSSRDF::SampleSp(Float u1, Point2f u2) const {
292292
auto sample = [&](auto ptr) { return ptr->SampleSp(u1, u2); };
293293
return Dispatch(sample);
294294
}

src/pbrt/bxdfs.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ std::string LayeredBxDF<TopBxDF, BottomBxDF, twoSided>::ToString() const {
7474
}
7575

7676
// DielectricBxDF Method Definitions
77-
pstd::optional<BSDFSample> DielectricBxDF::Sample_f(
77+
PBRT_CPU_GPU pstd::optional<BSDFSample> DielectricBxDF::Sample_f(
7878
Vector3f wo, Float uc, Point2f u, TransportMode mode,
7979
BxDFReflTransFlags sampleFlags) const {
8080
if (eta == 1 || mfDistrib.EffectivelySmooth()) {
@@ -169,7 +169,7 @@ pstd::optional<BSDFSample> DielectricBxDF::Sample_f(
169169
}
170170
}
171171

172-
SampledSpectrum DielectricBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
172+
PBRT_CPU_GPU SampledSpectrum DielectricBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
173173
if (eta == 1 || mfDistrib.EffectivelySmooth())
174174
return SampledSpectrum(0.f);
175175
// Evaluate rough dielectric BSDF
@@ -208,7 +208,7 @@ SampledSpectrum DielectricBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode)
208208
}
209209
}
210210

211-
Float DielectricBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
211+
PBRT_CPU_GPU Float DielectricBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
212212
BxDFReflTransFlags sampleFlags) const {
213213
if (eta == 1 || mfDistrib.EffectivelySmooth())
214214
return 0;
@@ -272,7 +272,7 @@ std::string ConductorBxDF::ToString() const {
272272
}
273273

274274
// HairBxDF Method Definitions
275-
HairBxDF::HairBxDF(Float h, Float eta, const SampledSpectrum &sigma_a, Float beta_m,
275+
PBRT_CPU_GPU HairBxDF::HairBxDF(Float h, Float eta, const SampledSpectrum &sigma_a, Float beta_m,
276276
Float beta_n, Float alpha)
277277
: h(h), eta(eta), sigma_a(sigma_a), beta_m(beta_m), beta_n(beta_n) {
278278
CHECK(h >= -1 && h <= 1);
@@ -300,7 +300,7 @@ HairBxDF::HairBxDF(Float h, Float eta, const SampledSpectrum &sigma_a, Float bet
300300
}
301301
}
302302

303-
SampledSpectrum HairBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
303+
PBRT_CPU_GPU SampledSpectrum HairBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
304304
// Compute hair coordinate system terms related to _wo_
305305
Float sinTheta_o = wo.x;
306306
Float cosTheta_o = SafeSqrt(1 - Sqr(sinTheta_o));
@@ -365,7 +365,7 @@ SampledSpectrum HairBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const
365365
return fsum;
366366
}
367367

368-
pstd::array<Float, HairBxDF::pMax + 1> HairBxDF::ApPDF(Float cosTheta_o) const {
368+
PBRT_CPU_GPU pstd::array<Float, HairBxDF::pMax + 1> HairBxDF::ApPDF(Float cosTheta_o) const {
369369
// Initialize array of $A_p$ values for _cosTheta_o_
370370
Float sinTheta_o = SafeSqrt(1 - Sqr(cosTheta_o));
371371
// Compute $\cos\,\thetat$ for refracted ray
@@ -394,7 +394,7 @@ pstd::array<Float, HairBxDF::pMax + 1> HairBxDF::ApPDF(Float cosTheta_o) const {
394394
return apPDF;
395395
}
396396

397-
pstd::optional<BSDFSample> HairBxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
397+
PBRT_CPU_GPU pstd::optional<BSDFSample> HairBxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
398398
TransportMode mode,
399399
BxDFReflTransFlags sampleFlags) const {
400400
// Compute hair coordinate system terms related to _wo_
@@ -489,7 +489,7 @@ pstd::optional<BSDFSample> HairBxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
489489
return BSDFSample(f(wo, wi, mode), wi, pdf, Flags());
490490
}
491491

492-
Float HairBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
492+
PBRT_CPU_GPU Float HairBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
493493
BxDFReflTransFlags sampleFlags) const {
494494
// TODO? flags...
495495

@@ -545,7 +545,7 @@ Float HairBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
545545
return pdf;
546546
}
547547

548-
RGBUnboundedSpectrum HairBxDF::SigmaAFromConcentration(Float ce, Float cp) {
548+
PBRT_CPU_GPU RGBUnboundedSpectrum HairBxDF::SigmaAFromConcentration(Float ce, Float cp) {
549549
RGB eumelaninSigma_a(0.419f, 0.697f, 1.37f);
550550
RGB pheomelaninSigma_a(0.187f, 0.4f, 1.05f);
551551
RGB sigma_a = ce * eumelaninSigma_a + cp * pheomelaninSigma_a;
@@ -556,7 +556,7 @@ RGBUnboundedSpectrum HairBxDF::SigmaAFromConcentration(Float ce, Float cp) {
556556
#endif
557557
}
558558

559-
SampledSpectrum HairBxDF::SigmaAFromReflectance(const SampledSpectrum &c, Float beta_n,
559+
PBRT_CPU_GPU SampledSpectrum HairBxDF::SigmaAFromReflectance(const SampledSpectrum &c, Float beta_n,
560560
const SampledWavelengths &lambda) {
561561
SampledSpectrum sigma_a;
562562
for (int i = 0; i < NSpectrumSamples; ++i)
@@ -996,7 +996,8 @@ MeasuredBxDFData *MeasuredBxDF::BRDFDataFromFile(const std::string &filename,
996996
}
997997

998998
// MeasuredBxDF Method Definitions
999-
SampledSpectrum MeasuredBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
999+
PBRT_CPU_GPU SampledSpectrum MeasuredBxDF::f(Vector3f wo, Vector3f wi,
1000+
TransportMode mode) const {
10001001
// Check for valid reflection configurations
10011002
if (!SameHemisphere(wo, wi))
10021003
return SampledSpectrum(0);
@@ -1032,7 +1033,7 @@ SampledSpectrum MeasuredBxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) co
10321033
(4 * brdf->sigma.Evaluate(u_wo) * CosTheta(wi));
10331034
}
10341035

1035-
pstd::optional<BSDFSample> MeasuredBxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
1036+
PBRT_CPU_GPU pstd::optional<BSDFSample> MeasuredBxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
10361037
TransportMode mode,
10371038
BxDFReflTransFlags sampleFlags) const {
10381039
// Check flags and detect interactions in lower hemisphere
@@ -1083,7 +1084,7 @@ pstd::optional<BSDFSample> MeasuredBxDF::Sample_f(Vector3f wo, Float uc, Point2f
10831084
return BSDFSample(fr, wi, pdf * lum_pdf, BxDFFlags::GlossyReflection);
10841085
}
10851086

1086-
Float MeasuredBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
1087+
PBRT_CPU_GPU Float MeasuredBxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
10871088
BxDFReflTransFlags sampleFlags) const {
10881089
if (!(sampleFlags & BxDFReflTransFlags::Reflection))
10891090
return 0;
@@ -1127,7 +1128,7 @@ std::string NormalizedFresnelBxDF::ToString() const {
11271128
}
11281129

11291130
// BxDF Method Definitions
1130-
SampledSpectrum BxDF::rho(Vector3f wo, pstd::span<const Float> uc,
1131+
PBRT_CPU_GPU SampledSpectrum BxDF::rho(Vector3f wo, pstd::span<const Float> uc,
11311132
pstd::span<const Point2f> u2) const {
11321133
if (wo.z == 0)
11331134
return {};

src/pbrt/bxdfs.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,12 +1131,12 @@ class NormalizedFresnelBxDF {
11311131
Float eta;
11321132
};
11331133

1134-
inline SampledSpectrum BxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
1134+
PBRT_CPU_GPU inline SampledSpectrum BxDF::f(Vector3f wo, Vector3f wi, TransportMode mode) const {
11351135
auto f = [&](auto ptr) -> SampledSpectrum { return ptr->f(wo, wi, mode); };
11361136
return Dispatch(f);
11371137
}
11381138

1139-
inline pstd::optional<BSDFSample> BxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
1139+
PBRT_CPU_GPU inline pstd::optional<BSDFSample> BxDF::Sample_f(Vector3f wo, Float uc, Point2f u,
11401140
TransportMode mode,
11411141
BxDFReflTransFlags sampleFlags) const {
11421142
auto sample_f = [&](auto ptr) -> pstd::optional<BSDFSample> {
@@ -1145,18 +1145,18 @@ inline pstd::optional<BSDFSample> BxDF::Sample_f(Vector3f wo, Float uc, Point2f
11451145
return Dispatch(sample_f);
11461146
}
11471147

1148-
inline Float BxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
1148+
PBRT_CPU_GPU inline Float BxDF::PDF(Vector3f wo, Vector3f wi, TransportMode mode,
11491149
BxDFReflTransFlags sampleFlags) const {
11501150
auto pdf = [&](auto ptr) { return ptr->PDF(wo, wi, mode, sampleFlags); };
11511151
return Dispatch(pdf);
11521152
}
11531153

1154-
inline BxDFFlags BxDF::Flags() const {
1154+
PBRT_CPU_GPU inline BxDFFlags BxDF::Flags() const {
11551155
auto flags = [&](auto ptr) { return ptr->Flags(); };
11561156
return Dispatch(flags);
11571157
}
11581158

1159-
inline void BxDF::Regularize() {
1159+
PBRT_CPU_GPU inline void BxDF::Regularize() {
11601160
auto regularize = [&](auto ptr) { ptr->Regularize(); };
11611161
return Dispatch(regularize);
11621162
}

src/pbrt/cameras.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,24 @@ std::string CameraTransform::ToString() const {
6262
}
6363

6464
// Camera Method Definitions
65-
pstd::optional<CameraRayDifferential> Camera::GenerateRayDifferential(
65+
PBRT_CPU_GPU pstd::optional<CameraRayDifferential> Camera::GenerateRayDifferential(
6666
CameraSample sample, SampledWavelengths &lambda) const {
6767
auto gen = [&](auto ptr) { return ptr->GenerateRayDifferential(sample, lambda); };
6868
return Dispatch(gen);
6969
}
7070

71-
SampledSpectrum Camera::We(const Ray &ray, SampledWavelengths &lambda,
71+
PBRT_CPU_GPU SampledSpectrum Camera::We(const Ray &ray, SampledWavelengths &lambda,
7272
Point2f *pRaster2) const {
7373
auto we = [&](auto ptr) { return ptr->We(ray, lambda, pRaster2); };
7474
return Dispatch(we);
7575
}
7676

77-
void Camera::PDF_We(const Ray &ray, Float *pdfPos, Float *pdfDir) const {
77+
PBRT_CPU_GPU void Camera::PDF_We(const Ray &ray, Float *pdfPos, Float *pdfDir) const {
7878
auto pdf = [&](auto ptr) { return ptr->PDF_We(ray, pdfPos, pdfDir); };
7979
return Dispatch(pdf);
8080
}
8181

82-
pstd::optional<CameraWiSample> Camera::SampleWi(const Interaction &ref, Point2f u,
82+
PBRT_CPU_GPU pstd::optional<CameraWiSample> Camera::SampleWi(const Interaction &ref, Point2f u,
8383
SampledWavelengths &lambda) const {
8484
auto sample = [&](auto ptr) { return ptr->SampleWi(ref, u, lambda); };
8585
return Dispatch(sample);
@@ -113,7 +113,7 @@ CameraBase::CameraBase(CameraBaseParameters p)
113113
"the system may crash as a result of this.");
114114
}
115115

116-
pstd::optional<CameraRayDifferential> CameraBase::GenerateRayDifferential(
116+
PBRT_CPU_GPU pstd::optional<CameraRayDifferential> CameraBase::GenerateRayDifferential(
117117
Camera camera, CameraSample sample, SampledWavelengths &lambda) {
118118
// Generate regular camera ray _cr_ for ray differential
119119
pstd::optional<CameraRay> cr = camera.GenerateRay(sample, lambda);
@@ -281,7 +281,7 @@ CameraBaseParameters::CameraBaseParameters(const CameraTransform &cameraTransfor
281281
}
282282

283283
// OrthographicCamera Method Definitions
284-
pstd::optional<CameraRay> OrthographicCamera::GenerateRay(
284+
PBRT_CPU_GPU pstd::optional<CameraRay> OrthographicCamera::GenerateRay(
285285
CameraSample sample, SampledWavelengths &lambda) const {
286286
// Compute raster and camera sample positions
287287
Point3f pFilm = Point3f(sample.pFilm.x, sample.pFilm.y, 0);
@@ -305,7 +305,7 @@ pstd::optional<CameraRay> OrthographicCamera::GenerateRay(
305305
return CameraRay{RenderFromCamera(ray)};
306306
}
307307

308-
pstd::optional<CameraRayDifferential> OrthographicCamera::GenerateRayDifferential(
308+
PBRT_CPU_GPU pstd::optional<CameraRayDifferential> OrthographicCamera::GenerateRayDifferential(
309309
CameraSample sample, SampledWavelengths &lambda) const {
310310
// Compute main orthographic viewing ray
311311
// Compute raster and camera sample positions
@@ -401,7 +401,7 @@ OrthographicCamera *OrthographicCamera::Create(const ParameterDictionary &parame
401401
}
402402

403403
// PerspectiveCamera Method Definitions
404-
pstd::optional<CameraRay> PerspectiveCamera::GenerateRay(
404+
PBRT_CPU_GPU pstd::optional<CameraRay> PerspectiveCamera::GenerateRay(
405405
CameraSample sample, SampledWavelengths &lambda) const {
406406
// Compute raster and camera sample positions
407407
Point3f pFilm = Point3f(sample.pFilm.x, sample.pFilm.y, 0);
@@ -426,7 +426,7 @@ pstd::optional<CameraRay> PerspectiveCamera::GenerateRay(
426426
return CameraRay{RenderFromCamera(ray)};
427427
}
428428

429-
pstd::optional<CameraRayDifferential> PerspectiveCamera::GenerateRayDifferential(
429+
PBRT_CPU_GPU pstd::optional<CameraRayDifferential> PerspectiveCamera::GenerateRayDifferential(
430430
CameraSample sample, SampledWavelengths &lambda) const {
431431
// Compute raster and camera sample positions
432432
Point3f pFilm = Point3f(sample.pFilm.x, sample.pFilm.y, 0);
@@ -527,7 +527,7 @@ PerspectiveCamera *PerspectiveCamera::Create(const ParameterDictionary &paramete
527527
lensradius, focaldistance);
528528
}
529529

530-
SampledSpectrum PerspectiveCamera::We(const Ray &ray, SampledWavelengths &lambda,
530+
PBRT_CPU_GPU SampledSpectrum PerspectiveCamera::We(const Ray &ray, SampledWavelengths &lambda,
531531
Point2f *pRasterOut) const {
532532
// Check if ray is forward-facing with respect to the camera
533533
Float cosTheta = Dot(ray.d, RenderFromCamera(Vector3f(0, 0, 1), ray.time));
@@ -555,7 +555,7 @@ SampledSpectrum PerspectiveCamera::We(const Ray &ray, SampledWavelengths &lambda
555555
return SampledSpectrum(1 / (A * lensArea * Pow<4>(cosTheta)));
556556
}
557557

558-
void PerspectiveCamera::PDF_We(const Ray &ray, Float *pdfPos, Float *pdfDir) const {
558+
PBRT_CPU_GPU void PerspectiveCamera::PDF_We(const Ray &ray, Float *pdfPos, Float *pdfDir) const {
559559
// Return zero PDF values if ray direction is not front-facing
560560
Float cosTheta = Dot(ray.d, RenderFromCamera(Vector3f(0, 0, 1), ray.time));
561561
if (cosTheta <= cosTotalWidth) {
@@ -581,7 +581,7 @@ void PerspectiveCamera::PDF_We(const Ray &ray, Float *pdfPos, Float *pdfDir) con
581581
*pdfDir = 1 / (A * Pow<3>(cosTheta));
582582
}
583583

584-
pstd::optional<CameraWiSample> PerspectiveCamera::SampleWi(
584+
PBRT_CPU_GPU pstd::optional<CameraWiSample> PerspectiveCamera::SampleWi(
585585
const Interaction &ref, Point2f u, SampledWavelengths &lambda) const {
586586
// Uniformly sample a lens interaction _lensIntr_
587587
Point2f pLens = lensRadius * SampleUniformDiskConcentric(u);
@@ -607,7 +607,7 @@ pstd::optional<CameraWiSample> PerspectiveCamera::SampleWi(
607607
}
608608

609609
// SphericalCamera Method Definitions
610-
pstd::optional<CameraRay> SphericalCamera::GenerateRay(CameraSample sample,
610+
PBRT_CPU_GPU pstd::optional<CameraRay> SphericalCamera::GenerateRay(CameraSample sample,
611611
SampledWavelengths &lambda) const {
612612
// Compute spherical camera ray direction
613613
Point2f uv(sample.pFilm.x / film.FullResolution().x,
@@ -746,7 +746,7 @@ RealisticCamera::RealisticCamera(CameraBaseParameters baseParameters,
746746
FindMinimumDifferentials(this);
747747
}
748748

749-
Float RealisticCamera::TraceLensesFromFilm(const Ray &rCamera, Ray *rOut) const {
749+
PBRT_CPU_GPU Float RealisticCamera::TraceLensesFromFilm(const Ray &rCamera, Ray *rOut) const {
750750
Float elementZ = 0, weight = 1;
751751
// Transform _rCamera_ from camera to lens system space
752752
Ray rLens(Point3f(rCamera.o.x, rCamera.o.y, -rCamera.o.z),
@@ -894,7 +894,7 @@ Bounds2f RealisticCamera::BoundExitPupil(Float filmX0, Float filmX1) const {
894894
return pupilBounds;
895895
}
896896

897-
pstd::optional<ExitPupilSample> RealisticCamera::SampleExitPupil(Point2f pFilm,
897+
PBRT_CPU_GPU pstd::optional<ExitPupilSample> RealisticCamera::SampleExitPupil(Point2f pFilm,
898898
Point2f uLens) const {
899899
// Find exit pupil bound for sample distance from film center
900900
Float rFilm = std::sqrt(Sqr(pFilm.x) + Sqr(pFilm.y));
@@ -916,7 +916,7 @@ pstd::optional<ExitPupilSample> RealisticCamera::SampleExitPupil(Point2f pFilm,
916916
return ExitPupilSample{pPupil, pdf};
917917
}
918918

919-
pstd::optional<CameraRay> RealisticCamera::GenerateRay(CameraSample sample,
919+
PBRT_CPU_GPU pstd::optional<CameraRay> RealisticCamera::GenerateRay(CameraSample sample,
920920
SampledWavelengths &lambda) const {
921921
// Find point on film, _pFilm_, corresponding to _sample.pFilm_
922922
Point2f s(sample.pFilm.x / film.FullResolution().x,
@@ -956,7 +956,7 @@ std::string RealisticCamera::LensElementInterface::ToString() const {
956956
curvatureRadius, thickness, eta, apertureRadius);
957957
}
958958

959-
Float RealisticCamera::TraceLensesFromScene(const Ray &rCamera, Ray *rOut) const {
959+
PBRT_CPU_GPU Float RealisticCamera::TraceLensesFromScene(const Ray &rCamera, Ray *rOut) const {
960960
Float elementZ = -LensFrontZ();
961961
// Transform _rCamera_ from camera to lens system space
962962
const Transform LensFromCamera = Scale(1, 1, -1);

src/pbrt/cameras.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -584,30 +584,30 @@ class RealisticCamera : public CameraBase {
584584
pstd::vector<Bounds2f> exitPupilBounds;
585585
};
586586

587-
inline pstd::optional<CameraRay> Camera::GenerateRay(CameraSample sample,
587+
PBRT_CPU_GPU inline pstd::optional<CameraRay> Camera::GenerateRay(CameraSample sample,
588588
SampledWavelengths &lambda) const {
589589
auto generate = [&](auto ptr) { return ptr->GenerateRay(sample, lambda); };
590590
return Dispatch(generate);
591591
}
592592

593-
inline Film Camera::GetFilm() const {
593+
PBRT_CPU_GPU inline Film Camera::GetFilm() const {
594594
auto getfilm = [&](auto ptr) { return ptr->GetFilm(); };
595595
return Dispatch(getfilm);
596596
}
597597

598-
inline Float Camera::SampleTime(Float u) const {
598+
PBRT_CPU_GPU inline Float Camera::SampleTime(Float u) const {
599599
auto sample = [&](auto ptr) { return ptr->SampleTime(u); };
600600
return Dispatch(sample);
601601
}
602602

603-
inline const CameraTransform &Camera::GetCameraTransform() const {
603+
PBRT_CPU_GPU inline const CameraTransform &Camera::GetCameraTransform() const {
604604
auto gtc = [&](auto ptr) -> const CameraTransform & {
605605
return ptr->GetCameraTransform();
606606
};
607607
return Dispatch(gtc);
608608
}
609609

610-
inline void Camera::Approximate_dp_dxy(Point3f p, Normal3f n, Float time,
610+
PBRT_CPU_GPU inline void Camera::Approximate_dp_dxy(Point3f p, Normal3f n, Float time,
611611
int samplesPerPixel, Vector3f *dpdx,
612612
Vector3f *dpdy) const {
613613
if constexpr (AllInheritFrom<CameraBase>(Camera::Types())) {

src/pbrt/cmd/imgtool.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
#include <pbrt/filters.h>
88
#include <pbrt/options.h>
99
#ifdef PBRT_BUILD_GPU_RENDERER
10-
#include <pbrt/gpu/denoiser.h>
10+
#ifndef __HIP_PLATFORM_AMD__
11+
#include <pbrt/gpu/optix/denoiser.h>
12+
#endif // __HIP_PLATFORM_AMD__
1113
#include <pbrt/gpu/util.h>
1214
#endif // PBRT_BUILD_GPU_RENDERER
1315
#include <pbrt/util/args.h>

0 commit comments

Comments
 (0)