pfLPState with SpotLight

New Message Reply Date view Thread view Subject view Author view

From: Paul Duncan (paulduncan++at++thehfegroup.com)
Date: 03/07/2001 15:32:45


Hi All,

I'm having trouble fading out Light Points when the scene is lit with a
Spotlight that uses a projected texture. (I'm using the Alpha value to turn
the Light Points On and Off as in the Aqua demo) In a scene without a
spotlight the alpha responds correctly.

Is there some LPState or GeoState, Value or Mode that must be set for the
two to work together?

The current settings for the Light Point State and Geo State are:

            lps = pfNewLPState(pfGetSharedArena());

            /* Enable perspective size computation */
            pfLPStateMode(lps, PFLPS_SIZE_MODE, PF_ON);

            /* Clamp point size between .5 and 10 pixels */
            pfLPStateVal(lps, PFLPS_SIZE_MIN_PIXEL, 4.0f);
            pfLPStateVal(lps, PFLPS_SIZE_MAX_PIXEL, 10.0f);

            /* Real-world point size is .07 meters */
            pfLPStateVal(lps, PFLPS_SIZE_ACTUAL, 1.0f);

        /* Fade points smaller than 2 pixels */
            pfLPStateVal(lps, PFLPS_TRANSP_PIXEL_SIZE, 2.0f);

        /* Rest of settings copied from bubble example */
        pfLPStateVal(lps, PFLPS_TRANSP_EXPONENT, 2.0f);
        pfLPStateVal(lps, PFLPS_TRANSP_SCALE, 0.6f);
        pfLPStateVal(lps, PFLPS_TRANSP_CLAMP, 0.1f);
            pfLPStateMode(lps, PFLPS_RANGE_MODE, PFLPS_RANGE_MODE_TRUE);
        pfLPStateMode(lps, PFLPS_TRANSP_MODE, PFLPS_TRANSP_MODE_ALPHA);

            /*------------------ Set up pfGeoState -------------------*/
            gst = pfNewGState(pfGetSharedArena());

        pfGStateMode(gst, PFSTATE_CULLFACE, PFCF_OFF);
        pfGStateMode(gst, PFSTATE_ENLIGHTING, PF_OFF);
        pfGStateMode(gst, PFSTATE_ENFOG, PF_OFF);
        pfGStateMode(gst, PFSTATE_ENTEXGEN, PF_OFF);
        pfGStateMode(gst, PFSTATE_ENTEXTURE, PF_OFF);
        pfGStateMode(gst, PFSTATE_ANTIALIAS, PFAA_ON);
           pfGStateMode(gst, PFSTATE_TRANSPARENCY, PFTR_BLEND_ALPHA);
        pfGStateAttr(gst, PFSTATE_LPOINTSTATE, lps);
        pfGStateMode(gst, PFSTATE_ENLPOINTSTATE, PF_ON);

            /*------------------ Set up pfGeoSet -------------------*/
            gs = pfNewGSet(pfGetSharedArena());
        pfGSetPrimType(gs, PFGS_POINTS);
           pfGSetNumPrims(gs, N_LIGHTS);
        colors = pfMalloc(sizeof(pfVec4) * N_LIGHTS, pfGetSharedArena());
           coords = pfMalloc(sizeof(pfVec3) * N_LIGHTS, pfGetSharedArena());
            pfGSetAttr(gs, PFGS_COLOR4, PFGS_PER_VERTEX, colors, NULL);
            pfGSetAttr(gs, PFGS_COORD3, PFGS_PER_VERTEX, coords, NULL);
        pfGSetGState(gs, gst);

Paul Duncan
The HFE Group
220 Laurier Ave. W, Suite 350
(613) 230-8226
paulduncan++at++thehfegroup.com


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Wed Mar 07 2001 - 15:37:51 PST

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.