Skip to content

File InvocationState.h

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

Go to the documentation of this file

#pragma once

#include "Element/Element.h"
#include "RaysPtr.h"

namespace rayx {

enum class Sequential { No, Yes };

struct RAYX_API ConstState {
    int maxEvents;
    Sequential sequential = Sequential::No;
    int numSources;
    int numElements;
    int outputEventsGridStride;

    ObjectTransform* __restrict objectTransforms;
    OpticalElement* __restrict elements;
    int* __restrict materialIndices;
    double* __restrict materialTable;
    bool* __restrict objectRecordMask;  // Mask that decides which elements to record events for (array length is numElements)
    RayAttrMask attrRecordMask;
    RaysPtr rays;
};

struct RAYX_API MutableState {
    RaysPtr events;
    bool* __restrict storedFlags;
};

}  // namespace rayx