Hello,

Could someone (David Thompson ?) please add this to the bugs list of OpenDX?

Attached are:

1) RedCacheBug.net & RedCacheBug.cfg as a VPE network that generates the
      bug of red color caching.
2) RedCacheBug.png: the image file I get with red color from cache.


The VPE network contains the following info text:

-----------------------------------------------------------
This VPE network shows the problem with red color
when the image is pulled from cache.  Let the sequencer
run again and again; as soon as the image is pulled from
cache, extra red lines from right to left appear in the image.
        
Peculiar detail: only pure red color has this bug, other colors or
slight deviations from pure red do not experience this bug!
        
The bug may be third party software dependent, e.g. XFree or
Motif. Two years ago I experienced this bug on a RedHat 7.x PC
(with LessTif and XFree 3.6) and at present I see it on a FreeBSD
4.6 PC (with OpenMotif 2.2.2 and XFree 4.2).
        
Analysis: on the DX level, all this seems to be related to the caching
in the Image module. The configuration of the Image module has
settings for "Cache" and "Internal Caching". Only the internal caching
affects this bug:
      All Results - causes this bug
      Last Result & No results - solves the bug
(However, in order to see this, I have to do a "Connection->Reset Server"
each time I select a different caching option. Is that normal?)
        
Best regards,
R. Lahaye ([EMAIL PROTECTED])
-----------------------------------------------------------

Thanks for adding it to the bugs list.

Rob Lahaye.
//
// time: Wed Dec  4 11:52:05 2002
//
// version: 3.2.0 (format), 4.2.0 (DX)
//
//
// MODULE main
// page assignment: RedCacheBug order=2, windowed=0, showing=1
// workspace: width = 577, height = 406
// layout: snap = 0, width = 50, height = 50, align = NN
//
macro main(
) -> (
) {
    // 
    // node Sequencer[1]: x = 13, y = 10, inputs = 7, label = Sequencer
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Sequencer_1"
    // input[4]: defaulting = 0, visible = 0, type = 1, value = 0
    // input[5]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[6]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[7]: defaulting = 0, visible = 0, type = 16777217, value = { 0 1 1 
0 1 1 }
    // page group: RedCacheBug
    // vcr[1]: min = 0, max = 1, beg = 0, end = 1, cur = 0, inc = 1, loop = on, 
step = off, pal = on
    // window: position = (0.7594,0.0078), size = 0.2188x0.0781
    //
    main_Sequencer_1_in_3 = @frame;
main_Sequencer_1_out_1[cache: 2] = 
    Sequencer(
    main_Sequencer_1_in_1,
    main_Sequencer_1_in_2,
    main_Sequencer_1_in_3,
    main_Sequencer_1_in_4,
    main_Sequencer_1_in_5,
    main_Sequencer_1_in_6,
    main_Sequencer_1_in_7
    ) [instance: 1, cache: 1];
    // 
    // node Compute[1]: x = 19, y = 75, inputs = 2, label = Compute
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "[$0, 0, 0]"
    // page group: RedCacheBug
    // expression: value = [a, 0, 0]
    // name[2]: value = a
    //
main_Compute_1_out_1 = 
    Compute(
    main_Compute_1_in_1,
    main_Sequencer_1_out_1
    ) [instance: 1, cache: 1];
    // 
    // node Construct[2]: x = 15, y = 143, inputs = 4, label = Construct
    // input[1]: defaulting = 1, visible = 1, type = 16777224, value = {[0, 0, 
0]}
    // input[2]: defaulting = 1, visible = 0, type = 16777224, value = {[1, 1, 
1]}
    // input[3]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[4]: defaulting = 0, visible = 0, type = 16777245, value = {1}
    // page group: RedCacheBug
    //
main_Construct_2_out_1 = 
    Construct(
    main_Compute_1_out_1,
    main_Construct_2_in_2,
    main_Construct_2_in_3,
    main_Construct_2_in_4
    ) [instance: 2, cache: 1];
    // 
    // node AutoGlyph[1]: x = 13, y = 211, inputs = 7, label = AutoGlyph
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "sphere"
    // input[3]: defaulting = 0, visible = 0, type = 5, value = 1.0
    // input[4]: defaulting = 0, visible = 0, type = 5, value = .50
    // input[5]: visible = 0
    // page group: RedCacheBug
    //
main_AutoGlyph_1_out_1 = 
    AutoGlyph(
    main_Construct_2_out_1,
    main_AutoGlyph_1_in_2,
    main_AutoGlyph_1_in_3,
    main_AutoGlyph_1_in_4,
    main_AutoGlyph_1_in_5,
    main_AutoGlyph_1_in_6,
    main_AutoGlyph_1_in_7
    ) [instance: 1, cache: 1];
    // 
    // node Color[1]: x = 31, y = 278, inputs = 5, label = Color
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "red"
    // input[3]: visible = 0
    // page group: RedCacheBug
    //
main_Color_1_out_1 = 
    Color(
    main_AutoGlyph_1_out_1,
    main_Color_1_in_2,
    main_Color_1_in_3,
    main_Color_1_in_4,
    main_Color_1_in_5
    ) [instance: 1, cache: 1];
    // 
    // node Image[1]: x = 17, y = 344, inputs = 49, label = Image
    // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_1"
    // input[4]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[5]: defaulting = 0, visible = 0, type = 8, value = [0 0 0]
    // input[6]: defaulting = 0, visible = 0, type = 8, value = [0 0 8.70496]
    // input[7]: defaulting = 0, visible = 0, type = 5, value = 4.66499
    // input[8]: defaulting = 0, visible = 0, type = 1, value = 640
    // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.751
    // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0]
    // input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0001
    // input[12]: defaulting = 0, visible = 0, type = 1, value = 0
    // input[14]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[15]: defaulting = 1, visible = 0, type = 32, value = "none"
    // input[16]: defaulting = 1, visible = 0, type = 32, value = "none"
    // input[17]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[18]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[19]: defaulting = 0, visible = 0, type = 1, value = 0
    // input[29]: defaulting = 1, visible = 0, type = 3, value = 0
    // page group: RedCacheBug
    // depth: value = 16
    // window: position = (0.0094,0.3877), size = 0.5109x0.5098
    // internal caching: 1
    // interaction mode = NONE
    //
main_Image_1_out_1,
main_Image_1_out_2,
main_Image_1_out_3 = 
    Image(
    main_Image_1_in_1,
    main_Color_1_out_1,
    main_Image_1_in_3,
    main_Image_1_in_4,
    main_Image_1_in_5,
    main_Image_1_in_6,
    main_Image_1_in_7,
    main_Image_1_in_8,
    main_Image_1_in_9,
    main_Image_1_in_10,
    main_Image_1_in_11,
    main_Image_1_in_12,
    main_Image_1_in_13,
    main_Image_1_in_14,
    main_Image_1_in_15,
    main_Image_1_in_16,
    main_Image_1_in_17,
    main_Image_1_in_18,
    main_Image_1_in_19,
    main_Image_1_in_20,
    main_Image_1_in_21,
    main_Image_1_in_22,
    main_Image_1_in_23,
    main_Image_1_in_24,
    main_Image_1_in_25,
    main_Image_1_in_26,
    main_Image_1_in_27,
    main_Image_1_in_28,
    main_Image_1_in_29,
    main_Image_1_in_30,
    main_Image_1_in_31,
    main_Image_1_in_32,
    main_Image_1_in_33,
    main_Image_1_in_34,
    main_Image_1_in_35,
    main_Image_1_in_36,
    main_Image_1_in_37,
    main_Image_1_in_38,
    main_Image_1_in_39,
    main_Image_1_in_40,
    main_Image_1_in_41,
    main_Image_1_in_42,
    main_Image_1_in_43,
    main_Image_1_in_44,
    main_Image_1_in_45,
    main_Image_1_in_46,
    main_Image_1_in_47,
    main_Image_1_in_48,
    main_Image_1_in_49
    ) [instance: 1, cache: 1];
    //
    // decorator Annotate       pos=(124,21) size=453x348 style(Label), value = 
<NULL>
    // annotation user_begin: 1083
    // annotation user: This VPE network shows the problem with red color
    // annotation user: when the image is pulled from cache.  Let the sequencer
    // annotation user: run again and again; as soon as the image is pulled from
    // annotation user: cache, extra red lines from right to left appear in the 
image.
    // annotation user: <NULL>
    // annotation user: Peculiar detail: only pure red color has this bug, 
other colors or
    // annotation user: slight deviations from pure red do not experience this 
bug!
    // annotation user: <NULL>
    // annotation user: The bug may be third party software dependent, e.g. 
XFree or
    // annotation user: Motif. Two years ago I experienced this bug on a RedHat 
7.x PC
    // annotation user: (with LessTif and XFree 3.6) and at present I see it on 
a FreeBSD
    // annotation user: 4.6 PC (with OpenMotif 2.2.2 and XFree 4.2).
    // annotation user: <NULL>
    // annotation user: Analysis: on the DX level, all this seems to be related 
to the caching
    // annotation user: in the Image module. The configuration of the Image 
module has
    // annotation user: settings for "Cache" and "Internal Caching". Only the 
internal caching
    // annotation user: affects this bug:
    // annotation user:       All Results - causes this bug
    // annotation user:       Last Result & No results - solves the bug
    // annotation user: (However, in order to see this, I have to do a 
"Connection->Reset Server"
    // annotation user: each time I select a different caching option. Is that 
normal?)
    // annotation user: <NULL>
    // annotation user: Best regards,
    // annotation user: R. Lahaye ([EMAIL PROTECTED])
    // annotation user_end: <NULL>
    // page group: RedCacheBug
// network: end of macro body
CacheScene(main_Image_1_in_1, main_Image_1_out_1, main_Image_1_out_2);
}
main_Sequencer_1_in_1 = "Sequencer_1";
main_Sequencer_1_in_2 = NULL;
main_Sequencer_1_in_3 = NULL;
main_Sequencer_1_in_4 = 0;
main_Sequencer_1_in_5 = 1;
main_Sequencer_1_in_6 = NULL;
main_Sequencer_1_in_7 = { 0 1 1 0 1 1 };
main_Sequencer_1_out_1 = NULL;

@startframe = 0;
@nextframe  = @startframe;
@endframe   = 1;
@deltaframe = 1;
main_Compute_1_in_1 = "[$0, 0, 0]";
main_Compute_1_out_1 = NULL;
main_Construct_2_in_2 = NULL;
main_Construct_2_in_3 = 1;
main_Construct_2_in_4 = {1};
main_Construct_2_out_1 = NULL;
main_AutoGlyph_1_in_2 = "sphere";
main_AutoGlyph_1_in_3 = 1.0;
main_AutoGlyph_1_in_4 = .50;
main_AutoGlyph_1_in_5 = NULL;
main_AutoGlyph_1_in_6 = NULL;
main_AutoGlyph_1_in_7 = NULL;
main_AutoGlyph_1_out_1 = NULL;
main_Color_1_in_2 = "red";
main_Color_1_in_3 = NULL;
main_Color_1_in_4 = NULL;
main_Color_1_in_5 = NULL;
main_Color_1_out_1 = NULL;
macro Image(
        id,
        object,
        where,
        useVector,
        to,
        from,
        width,
        resolution,
        aspect,
        up,
        viewAngle,
        perspective,
        options,
        buttonState = 1,
        buttonUpApprox = "none",
        buttonDownApprox = "none",
        buttonUpDensity = 1,
        buttonDownDensity = 1,
        renderMode = 0,
        defaultCamera,
        reset,
        backgroundColor,
        throttle,
        RECenable = 0,
        RECfile,
        RECformat,
        RECresolution,
        RECaspect,
        AAenable = 0,
        AAlabels,
        AAticks,
        AAcorners,
        AAframe,
        AAadjust,
        AAcursor,
        AAgrid,
        AAcolors,
        AAannotation,
        AAlabelscale,
        AAfont,
        interactionMode,
        title,
        AAxTickLocs,
        AAyTickLocs,
        AAzTickLocs,
        AAxTickLabels,
        AAyTickLabels,
        AAzTickLabels,
        webOptions) -> (
        object,
        camera,
        where)
{
    ImageMessage(
        id,
        backgroundColor,
        throttle,
        RECenable,
        RECfile,
        RECformat,
        RECresolution,
        RECaspect,
        AAenable,
        AAlabels,
        AAticks,
        AAcorners,
        AAframe,
        AAadjust,
        AAcursor,
        AAgrid,
        AAcolors,
        AAannotation,
        AAlabelscale,
        AAfont,
        AAxTickLocs,
        AAyTickLocs,
        AAzTickLocs,
        AAxTickLabels,
        AAyTickLabels,
        AAzTickLabels,
        interactionMode,
        title,
        renderMode,
        buttonUpApprox,
        buttonDownApprox,
        buttonUpDensity,
        buttonDownDensity) [instance: 1, cache: 1];
    autoCamera =
        AutoCamera(
            object,
            "front",
            object,
            resolution,
            aspect,
            [0,1,0],
            perspective,
            viewAngle,
            backgroundColor) [instance: 1, cache: 1];
    realCamera =
        Camera(
            to,
            from,
            width,
            resolution,
            aspect,
            up,
            perspective,
            viewAngle,
            backgroundColor) [instance: 1, cache: 1];
    coloredDefaultCamera = 
         UpdateCamera(defaultCamera,
            background=backgroundColor) [instance: 1, cache: 1];
    nullDefaultCamera =
        Inquire(defaultCamera,
            "is null + 1") [instance: 1, cache: 1];
    resetCamera =
        Switch(
            nullDefaultCamera,
            coloredDefaultCamera,
            autoCamera) [instance: 1, cache: 1];
    resetNull = 
        Inquire(
            reset,
            "is null + 1") [instance: 2, cache: 1];
    reset =
        Switch(
            resetNull,
            reset,
            0) [instance: 2, cache: 1];
    whichCamera =
        Compute(
            "($0 != 0 || $1 == 0) ? 1 : 2",
            reset,
            useVector) [instance: 1, cache: 1];
    camera = Switch(
            whichCamera,
            resetCamera,
            realCamera) [instance: 3, cache: 1];
    AAobject =
        AutoAxes(
            object,
            camera,
            AAlabels,
            AAticks,
            AAcorners,
            AAframe,
            AAadjust,
            AAcursor,
            AAgrid,
            AAcolors,
            AAannotation,
            AAlabelscale,
            AAfont,
            AAxTickLocs,
            AAyTickLocs,
            AAzTickLocs,
            AAxTickLabels,
            AAyTickLabels,
            AAzTickLabels) [instance: 1, cache: 1];
    switchAAenable = Compute("$0+1",
             AAenable) [instance: 2, cache: 1];
    object = Switch(
             switchAAenable,
             object,
             AAobject) [instance:4, cache: 1];
    SWapproximation_options =
        Switch(
            buttonState,
            buttonUpApprox,
            buttonDownApprox) [instance: 5, cache: 1];
    SWdensity_options =
        Switch(
            buttonState,
            buttonUpDensity,
            buttonDownDensity) [instance: 6, cache: 1];
    HWapproximation_options =
        Format(
            "%s,%s",
            buttonDownApprox,
            buttonUpApprox) [instance: 1, cache: 1];
    HWdensity_options =
        Format(
            "%d,%d",
            buttonDownDensity,
            buttonUpDensity) [instance: 2, cache: 1];
    switchRenderMode = Compute(
             "$0+1",
             renderMode) [instance: 3, cache: 1];
    approximation_options = Switch(
             switchRenderMode,
            SWapproximation_options,
             HWapproximation_options) [instance: 7, cache: 1];
    density_options = Switch(
             switchRenderMode,
            SWdensity_options,
            HWdensity_options) [instance: 8, cache: 1];
    renderModeString = Switch(
            switchRenderMode,
            "software",
            "hardware")[instance: 9, cache: 1];
    object_tag = Inquire(
            object,
            "object tag")[instance: 3, cache: 1];
    annoted_object =
        Options(
            object,
            "send boxes",
            0,
            "cache",
            1,
            "object tag",
            object_tag,
            "ddcamera",
            whichCamera,
            "rendering approximation",
            approximation_options,
            "render every",
            density_options,
            "button state",
            buttonState,
            "rendering mode",
            renderModeString) [instance: 1, cache: 1];
    RECresNull =
        Inquire(
            RECresolution,
            "is null + 1") [instance: 4, cache: 1];
    ImageResolution =
        Inquire(
            camera,
            "camera resolution") [instance: 5, cache: 1];
    RECresolution =
        Switch(
            RECresNull,
            RECresolution,
            ImageResolution) [instance: 10, cache: 1];
    RECaspectNull =
        Inquire(
            RECaspect,
            "is null + 1") [instance: 6, cache: 1];
    ImageAspect =
        Inquire(
            camera,
            "camera aspect") [instance: 7, cache: 1];
    RECaspect =
        Switch(
            RECaspectNull,
            RECaspect,
            ImageAspect) [instance: 11, cache: 1];
    switchRECenable = Compute(
          "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4",
            RECenable,
            switchRenderMode,
            RECresolution,
            ImageResolution,
            RECaspect,
             ImageAspect) [instance: 4, cache: 1];
    NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = 
Route(switchRECenable, annoted_object);
    Display(
        NoRECobject,
        camera,
        where,
        throttle) [instance: 1, cache: 1];
    image =
        Render(
            RECNoRerenderObject,
            camera) [instance: 1, cache: 1];
    Display(
        image,
        NULL,
        where,
        throttle) [instance: 2, cache: 1];
    WriteImage(
        image,
        RECfile,
        RECformat) [instance: 1, cache: 1];
    rec_where = Display(
        RECNoRerHW,
        camera,
        where,
        throttle) [instance: 1, cache: 0];
    rec_image = ReadImageWindow(
        rec_where) [instance: 1, cache: 1];
    WriteImage(
        rec_image,
        RECfile,
        RECformat) [instance: 1, cache: 1];
    RECupdateCamera =
        UpdateCamera(
            camera,
            resolution=RECresolution,
            aspect=RECaspect) [instance: 2, cache: 1];
    Display(
        RECRerenderObject,
        camera,
        where,
        throttle) [instance: 1, cache: 1];
    RECRerenderObject =
        ScaleScreen(
            RECRerenderObject,
            NULL,
            RECresolution,
            camera) [instance: 1, cache: 1];
    image =
        Render(
            RECRerenderObject,
            RECupdateCamera) [instance: 2, cache: 1];
    WriteImage(
        image,
        RECfile,
        RECformat) [instance: 2, cache: 1];
}
main_Image_1_in_1 = "Image_1";
main_Image_1_in_3 = "X16,,";
main_Image_1_in_4 = 1;
main_Image_1_in_5 = [0 0 0];
main_Image_1_in_6 = [0 0 8.70496];
main_Image_1_in_7 = 4.66499;
main_Image_1_in_8 = 640;
main_Image_1_in_9 = 0.751;
main_Image_1_in_10 = [0 1 0];
main_Image_1_in_11 = NULL;
main_Image_1_in_12 = 0;
main_Image_1_in_13 = NULL;
main_Image_1_in_14 = 1;
main_Image_1_in_15 = NULL;
main_Image_1_in_16 = NULL;
main_Image_1_in_17 = NULL;
main_Image_1_in_18 = NULL;
main_Image_1_in_19 = 0;
main_Image_1_in_20 = NULL;
main_Image_1_in_21 = NULL;
main_Image_1_in_22 = NULL;
main_Image_1_in_23 = NULL;
main_Image_1_in_25 = NULL;
main_Image_1_in_26 = NULL;
main_Image_1_in_27 = NULL;
main_Image_1_in_28 = NULL;
main_Image_1_in_29 = NULL;
main_Image_1_in_30 = NULL;
main_Image_1_in_31 = NULL;
main_Image_1_in_32 = NULL;
main_Image_1_in_33 = NULL;
main_Image_1_in_34 = NULL;
main_Image_1_in_35 = NULL;
main_Image_1_in_36 = NULL;
main_Image_1_in_37 = NULL;
main_Image_1_in_38 = NULL;
main_Image_1_in_39 = NULL;
main_Image_1_in_40 = NULL;
main_Image_1_in_41 = NULL;
main_Image_1_in_42 = NULL;
main_Image_1_in_43 = NULL;
main_Image_1_in_44 = NULL;
main_Image_1_in_45 = NULL;
main_Image_1_in_46 = NULL;
main_Image_1_in_47 = NULL;
main_Image_1_in_48 = NULL;
main_Image_1_in_49 = NULL;
Executive("product version 4 2 0");
$sync

sequence main();
play;
//
// time: Wed Dec  4 11:52:05 2002
//
// version: 3.2.0 (format), 4.2.0 (DX)
//
//
// panel[1]: position = (0.5641,0.3145), size = 0.2930x0.4395, startup = 1, 
devstyle = 1
// title: value = Control Panel
//
// workspace: width = 500, height = 500
// layout: snap = 0, width = 50, height = 50, align = NN
//
// node Sequencer[1]:
// vcr[1]: min = 0, max = 1, beg = 0, end = 1, cur = 0, inc = 1, loop = on, 
step = off, pal = on
// window: position = (0.7594,0.0078), size = 0.2188x0.0781
// startup = 0
//
// node Image[1]:
// depth: value = 16
// window: position = (0.0094,0.3877), size = 0.5109x0.5098
// input[1]: defaulting = 0, value = "Image_1"
// input[4]: defaulting = 0, value = 1
// input[5]: defaulting = 0, value = [0 0 0]
// input[6]: defaulting = 0, value = [0 0 8.70496]
// input[7]: defaulting = 0, value = 4.66499
// input[8]: defaulting = 0, value = 640
// input[9]: defaulting = 0, value = 0.751
// input[10]: defaulting = 0, value = [0 1 0]
// input[11]: defaulting = 1, value = 30.0001
// input[12]: defaulting = 0, value = 0
// input[14]: defaulting = 0, value = 1
// input[15]: defaulting = 1, value = "none"
// input[16]: defaulting = 1, value = "none"
// input[17]: defaulting = 1, value = 1
// input[18]: defaulting = 1, value = 1
// input[19]: defaulting = 0, value = 0
// input[29]: defaulting = 1, value = 0
// internal caching: 1
// interaction mode = NONE

PNG image

Reply via email to