41 #include "RixPredefinedStrings.hpp" 129 RtInt count = 0, value = 0;
131 const static RtUString US_USER_DISABLEINTEGRATORAOVS(
"user:disableIntegratorAOVs");
133 US_USER_DISABLEINTEGRATORAOVS, &value,
sizeof(
RtInt), &type, &count);
134 if (ret == 0 && count == 1 && value == 1)
155 for (
int i = 0; i <
k_numGeoAovs; i++) aovIdList[i] = k_InvalidChannelId;
161 int const entries =
sizeof( s_aovNames ) /
sizeof( s_aovNames[ 0 ] );
166 "s_aovNames out of sync with RixShadingContext::BuiltinVar");
169 int numRequestedAOVs = 0;
170 for (
int dc = 0; dc < numDisplays; ++dc)
174 if (!s_aovNames[n].Empty() && displayChannels[dc].channel == s_aovNames[n])
177 aovIdList[n] = displayChannels[dc].
id;
186 if (!numRequestedAOVs)
197 assert(aovIdList != NULL);
198 return (aovIdList[
k_Pworld] != k_InvalidChannelId && aovIdList[
k_depth] != k_InvalidChannelId);
203 RtInt numShadingContexts,
210 RtUString coordinateSystem = Rix::k_camera)
214 assert(aovIdList != NULL);
215 assert(aovValue != NULL);
218 for (
int g = 0; g < numShadingContexts; g++)
230 int* rayDepths =
new int[sctx.
numPts];
234 if (rayDepths[0] == 0)
249 if (!write)
continue;
253 if (aovIdList[d] != k_InvalidChannelId)
266 if (coordinateSystem)
279 for (
int i = 0; i < sctx.
numPts; i++)
281 if (lobesWanted && !lobesWanted[i].GetValid())
305 if (coordinateSystem)
318 for (
int i = 0; i < sctx.
numPts; i++)
320 if (lobesWanted && !lobesWanted[i].GetValid())
340 if (coordinateSystem)
353 for (
int i = 0; i < sctx.
numPts; i++)
355 if (lobesWanted && !lobesWanted[i].GetValid())
378 if (coordinateSystem)
391 for (
int i = 0; i < sctx.
numPts; i++)
393 if (lobesWanted && !lobesWanted[i].GetValid())
419 for (
int i = 0; i < sctx.
numPts; i++)
421 if (lobesWanted && !lobesWanted[i].GetValid())
457 for (
int i = 0; i < sctx.
numPts; i++)
472 for (
int i = 0; i < numDisplays; i++)
474 if (displays[i].
id == aovIdList[d])
483 for (
int i = 0; i < sctx.
numPts; i++)
486 for (
int i = 0; i < sctx.
numPts; i++)
490 static_cast<float>(p[i]));
496 assert(
true ==
false);
522 for (
int i = 0; i < sctx.
numPts; i++)
526 if (aovIdList[
k_depth] != k_InvalidChannelId)
527 savedFloat[i] = aovValue[i][1];
544 for (
int i = 0; i < sctx.
numPts; i++)
555 int* rayTrueDepths =
new int[sctx.
numPts];
573 bool PworldNotComputed = (aovIdList[
k_Pworld] == k_InvalidChannelId);
574 if (PworldNotComputed)
590 for (
int i = 0; i < sctx.
numPts; i++)
600 if (haveTrueDepths && rayTrueDepths[i] != 0)
608 if (PworldNotComputed)
610 depth =
RtColorRGB(VLen, aovValue[i][1], AbsDot(Nn[i], Vn[i]));
614 depth =
RtColorRGB(VLen, savedFloat[i], AbsDot(Nn[i], Vn[i]));
618 delete[] rayTrueDepths;
626 for (
int i = 0; i < sctx.
numPts; i++)
658 sctx.
Transform(interp, Rix::k_current, Rix::k_object, aovValue, NULL);
661 for (
int i = 0; i < sctx.
numPts; i++)
671 float const* p =
nullptr;
679 for (
int i = 0; i < numDisplays; i++)
681 if (displays[i].
id == aovIdList[d])
687 for (
int i = 0; i < sctx.
numPts; i++)
691 static_cast<int>(p[i]));
RixBxdf * GetBxdf() const
Definition: RixShading.h:746
Surface V parameterization (type float)
Definition: RixShading.h:959
PRMAN_INLINE int RixIsMatte(RixShadingContext const &sCtx)
Definition: RixShadingUtils.h:1486
RixShadingContext is analogous to a RenderMan grid - it is a group of 1 or more points that may be sh...
Definition: RixShading.h:663
This class allows integrators to instrospect the rendering environment.
Definition: RixIntegrator.h:473
Bias to apply for transmitted rays (type float)
Definition: RixShading.h:956
void Splat(RtInt numShadingContexts, RixShadingContext const **sctxs, RixDisplayServices *dspsvc, RtFloat3 *aovValue, RtFloat *savedFloat, RixChannelId *aovIdList, RixBXLobeTraits const *lobesWanted=NULL, RtUString coordinateSystem=Rix::k_camera)
Definition: PxrGeoAovs.h:202
Definition: RixShading.h:501
Definition: RixShading.h:1117
virtual bool Write(RixChannelId id, int iCtxIndex, float const value)=0
Write() is similar to Splat(), except that it overwrites the existing value instead of accumulating...
virtual bool GetProperty(RayProperty, void const *) const
As long as the RixIntegrator used supports the appropriate ray property query, shading plugin authors...
Definition: RixShading.h:1100
Current LPE State (type RixLPEState)
Definition: RixShading.h:976
Surface W parameterization (type float)
Definition: RixShading.h:960
RtRayGeometry * primaryRays
The primary camera rays.
Definition: RixIntegrator.h:625
PRMAN_INLINE bool GetContinuation() const
Definition: RixBxdfLobe.h:1004
virtual int GetOption(RtUString const name, void *result, int resultLength, Type *resultType, int *resultCount)=0
GetAttribute, GetOption, return the current values of the named Attribute or Option.
Definition: PxrGeoAovs.h:60
pxrcore::ColorRGB RtColorRGB
Definition: RiTypesHelper.h:520
Rix interfaces are obtained from an RixContext.
Definition: RixInterfaces.h:172
BuiltinVar
Definition: RixShading.h:937
virtual int Transform(TransformInterpretation interp, const RtUString fromSpace, const RtUString toSpace, RtFloat3 *var, float *radius=NULL) const =0
Transform an array of RtFloat3 (and optional radius) the same size as the numPts in the RixShadingCon...
RixChannelId id
Definition: RixIntegrator.h:70
Definition: RixShading.h:436
Shading time, normalized between shutter open and close (type float)
Definition: RixShading.h:971
Definition: PxrGeoAovs.h:56
Definition: PxrGeoAovs.h:59
Instantaneous P velocity relative to the world (type RtFloat3)
Definition: RixShading.h:970
Ray footprint (radius) in W (type float)
Definition: RixShading.h:965
Definition: RixIntegrator.h:615
float RtFloat
Definition: ri.h:54
When raytracing, the ray footprint radius at P, otherwise the micropolygon radius (ie half mpSize) at...
Definition: RixShading.h:941
Backward 2D raster-space motion vector (type RtFloat3)
Definition: RixShading.h:979
RixSCDetail
RixSCDetail enumerates the valid sizing qualifiers for SC parameters.
Definition: RixShading.h:432
void GetChannelIds(RixIntegratorEnvironment &env, RixChannelId *&aovIdList)
Definition: PxrGeoAovs.h:147
Ray footprint (radius) in V (type float)
Definition: RixShading.h:963
Surface derivative in U (type RtFloat3)
Definition: RixShading.h:967
Opacity (type RtFloat3)
Definition: RixShading.h:975
Definition: PxrGeoAovs.h:54
Bias to apply for reflected rays (type float)
Definition: RixShading.h:955
RixBXLobeSampled id of incident rays (type int)
Definition: RixShading.h:953
Definition: RixShading.h:985
Instantaneous P velocity relative to the camera (type RtFloat3)
Definition: RixShading.h:982
virtual void GetBuiltinVar(BuiltinVar, int const **var) const =0
RixDisplayChannel const *const displays
Definition: RixIntegrator.h:556
Definition: RiTypesHelper.h:82
TransformInterpretation
Definition: RixShading.h:1113
Ray footprint (radius) in U (type float)
Definition: RixShading.h:961
Normalized shading normal (type RtFloat3)
Definition: RixShading.h:944
Spread of incident ray (type float): how much the ray radius increased for each unit distance the ray...
Definition: RixShading.h:951
Local principal surface curvature in u dir (type float)
Definition: RixShading.h:980
PxrGeoAovIds
Definition: PxrGeoAovs.h:52
pxrcore::Float3 RtFloat3
Definition: RiTypesHelper.h:69
Definition: RixIntegrator.h:82
Definition: RixShading.h:506
Surface U parameterization (type float)
Definition: RixShading.h:958
Definition: PxrGeoAovs.h:46
int numPts
numPts is the number of shading points.
Definition: RixShading.h:696
Definition: RixShading.h:1115
Undisplaced P (type RtFloat3)
Definition: RixShading.h:943
Definition: PxrGeoAovs.h:62
int * integratorCtxIndex
integratorCtxIndex maps indices to varying ShadingContext entries to the index associated with Integr...
Definition: RixShading.h:846
Local principal surface curvature in v dir (type float)
Definition: RixShading.h:981
virtual void GetDisplayChannels(int *numDisplays, RixDisplayChannel const **displays)=0
Gets a list of available display channels.
virtual RixInterface * GetRixInterface(RixInterfaceId id) const =0
Get the specified interface from this context.
Forward 2D raster-space motion vector (type RtFloat3)
Definition: RixShading.h:978
Definition: PxrGeoAovs.h:61
PRMAN_INLINE RixBXLobeTraits GetAllLobeTraits()
Definition: RixBxdf.h:545
Definition: PxrGeoAovs.h:58
Multiple methods of RixDisplayServices require similar parameters:
Definition: RixIntegrator.h:97
Radius of incident ray at P (type float)
Definition: RixShading.h:952
Definition: PxrGeoAovs.h:64
Shading position (type RtFloat3)
Definition: RixShading.h:940
RtPoint3 origin
Definition: RixIntegrator.h:247
enum RixDisplayChannel::ChannelType type
An interface for discovering the current state of the renderer.
Definition: RixInterfaces.h:777
Id for RixRenderState interface.
Definition: RixInterfaces.h:109
Normalized shading tangent (type RtFloat3)
Definition: RixShading.h:947
Normalized geometric normal (type RtFloat3)
Definition: RixShading.h:945
Parent ray shading context serialization (type int)
Definition: RixShading.h:977
Length of view vector (type float)
Definition: RixShading.h:949
Local mean surface curvature (type float)
Definition: RixShading.h:950
Definition: PxrGeoAovs.h:57
virtual RixSCDetail GetPrimVar(const RtUString name, RixSCType *type, int *arraylen) const =0
GetPrimVar: lazily evaluates the named primitive variable.
Surface derivative in V (type RtFloat3)
Definition: RixShading.h:968
Incident index of refraction (type float)
Definition: RixShading.h:974
Note that the same channel name may appear multiple times within a list of RixDisplayChannels.
Definition: RixIntegrator.h:68
Normalized undisplaced N (type RtFloat3)
Definition: RixShading.h:946
unsigned int RixChannelId
Definition: RixIntegrator.h:55
Attribute "identifier" "id2" (type int)
Definition: RixShading.h:973
Surface derivative in W (type RtFloat3)
Definition: RixShading.h:969
Attribute "identifier" "id" (type int)
Definition: RixShading.h:972
This struct represents the characteristics of potentially several lobes of a bxdf in aggregate...
Definition: RixBxdfLobe.h:178
bool HasHits() const
Definition: RixShading.h:737
bool NeedTempFloat(RixChannelId *aovIdList)
Definition: PxrGeoAovs.h:195
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
virtual RixIntegratorContext * GetIntegratorContext() const =0
Returns a reference to the RixIntegratorContext which created this shading context.
bool disableIntegratorAOVs(RixContext &ctx, RixChannelId *&aovIdList)
Definition: PxrGeoAovs.h:126
Micropolygon size; 0 for non-tessellated surfaces (type float)
Definition: RixShading.h:954
Bias to apply for shadow rays (Direct Light) to avoid the geometric shadow terminator.
Definition: RixShading.h:957
int const numDisplays
Display state (unmutable).
Definition: RixIntegrator.h:555
Type
Definition: RixInterfaces.h:140
RtFloat3 RtVector3
Definition: RiTypesHelper.h:72
Definition: RixShading.h:1116
Normalized view vector, points away from shading points (type RtFloat3)
Definition: RixShading.h:948
int RtInt
Definition: ri.h:55
Normalized analytical undisplaced N (type RtFloat3)
Definition: RixShading.h:984
Definition: RixBxdf.h:518
Definition: PxrGeoAovs.h:63