Skip to content

File Behave.h

File List > Intern > rayx-core > src > Shader > Behave.h

Go to the documentation of this file

#pragma once

#include "Collision.h"
#include "Core.h"
#include "InvocationState.h"
#include "Ray.h"

namespace rayx {


RAYX_FN_ACC void behaveCrystal(detail::Ray& __restrict ray, const Behaviour::Crystal& __restrict crystal, const CollisionPoint& __restrict col);
RAYX_FN_ACC void behaveSlit(detail::Ray& __restrict ray, const Behaviour::Slit& __restrict slit);
RAYX_FN_ACC void behaveRZP(detail::Ray& __restrict ray, const Behaviour::RZP& __restrict rzp, const CollisionPoint& __restrict col);
RAYX_FN_ACC void behaveGrating(detail::Ray& __restrict ray, const Behaviour::Grating& __restrict grating, const CollisionPoint& __restrict col);
RAYX_FN_ACC void behaveMirror(detail::Ray& __restrict ray, const CollisionPoint& __restrict col, const Coating& __restrict coating, int material,
                              const int* __restrict materialIndices, const double* __restrict materialTable);
RAYX_FN_ACC void behaveFoil(detail::Ray& __restrict ray, const Behaviour::Foil& __restrict foil, const CollisionPoint& __restrict col, int material,
                            const int* __restrict materialIndices, const double* __restrict materialTable);
RAYX_FN_ACC void behaveImagePlane(detail::Ray& __restrict ray);
RAYX_FN_ACC void behave(detail::Ray& __restrict ray, const CollisionPoint& __restrict col, const OpticalElement& __restrict element,
                        const int* __restrict materialIndices, const double* __restrict materialTable);

}  // namespace rayx