public override void Init( FXEffect m_effect, FXConstantBuffer m_cb )
        {
            // bind the local variables with the shader
            Color_Variable = m_cb.GetMemberByName<Vector3>( VariableName + "_Color" );

            // set the default values
            Color_Variable.Set(_color);
        }
        public override void Init( FXEffect m_effect, FXConstantBuffer m_cb )
        {
            // bind the local variables with the shader
            Texture_Variable = m_effect.GetResourceByName(VariableName + "_Texture");

            // set the default values
            if (Tex != null)
                Texture_Variable.SetResource(Tex.shaderResource);
        }
        public override void Init( FXEffect m_effect, FXConstantBuffer m_cb )
        {
            // bind the local variables with the shader
            NumBoxX_Variable = m_cb.GetMemberByName<int>( VariableName + "_CheckerX" );
            NumBoxY_Variable = m_cb.GetMemberByName<int>( VariableName + "_CheckerY" );

            // set the default values
            NumBoxX_Variable.Set(_NumBoxX);
            NumBoxY_Variable.Set(_NumBoxY);
        }
        public override void Init( FXEffect m_effect, FXConstantBuffer m_cb )
        {
            // bind the local variables with the shader
            BrickWidth_Variable = m_cb.GetMemberByName<float>( VariableName + "_BrickWidth" );
            BrickHeight_Variable = m_cb.GetMemberByName<float>( VariableName + "_BrickHeight" );
            BrickShift_Variable = m_cb.GetMemberByName<float>( VariableName + "_BrickShift" );
            MortarThickness_Variable = m_cb.GetMemberByName<float>( VariableName + "_MortarThickness" );

            // set the default values
            BrickWidth_Variable.Set(_BrickWidth);
            BrickHeight_Variable.Set(_BrickHeight);
            BrickShift_Variable.Set(_BrickShift);
            MortarThickness_Variable.Set(_MortarThickness);
        }
Пример #5
0
 private void InitShader()
 {
     /// get the constant buffer that have all of our variables
     cbCustomShader = m_effect.GetConstantBufferByName( "CustomVariables" );
 }
        public override void Init( FXEffect m_effect , FXConstantBuffer m_cb )
        {
            /// Bind the random Texture
            RandomTex_Variable = m_effect.GetResourceByName(VariableName + "_RandomTex");

            /// Get the variables from Constant buffer
            MinValue_Variable = m_cb.GetMemberByName<float>( VariableName + "_MinValue" );
            MaxValue_Variable = m_cb.GetMemberByName<float>( VariableName + "_MaxValue" );
            Tile_X_Variable = m_cb.GetMemberByName<float>( VariableName + "_Tile_X" );
            Tile_Y_Variable = m_cb.GetMemberByName<float>( VariableName + "_Tile_Y" );
            Loops_Variable = m_cb.GetMemberByName<int>( VariableName + "_Loops" );

            // create and set random texture
            SetRandomTex(_Seed);

            // set the values of the variables
            MinValue_Variable.Set(_MinValue);
            MaxValue_Variable.Set(_MaxValue);
            Loops_Variable.Set(_Loops);
            Tile_X_Variable.Set(_Tile_X);
            Tile_Y_Variable.Set(_Tile_Y);
        }
Пример #7
0
        private void InitShader()
        {
            /// Bind the random Texture
            RandomTex_Variable =m_effect.GetResourceByName( "randomTex" );

            /// Bind the constant buffer with local buffer
            CB_PerlinNoise = m_effect.GetConstantBufferByName<cbPerlinNoise>( "cbPerlinNoiseVariables");

            // create and set random texture
            SetRandomTex( _Seed );
        }
Пример #8
0
        public void InitBuffers(out Buffer Points, out Buffer Regions)
        {
            // get the number of the points
            int SizeOfPoint = ComputeShader.SizeOfFloat2;

            // allocate the 2 buffers
            g_pBuffer1 = ComputeShader.CreateBuffer(MaxNumElements, SizeOfPoint, AccessViewType.SRV | AccessViewType.UAV);
            g_pBuffer1.DebugName = "g_pBuffer1";
            g_pBuffer2 = ComputeShader.CreateBuffer(MaxNumElements, SizeOfPoint, AccessViewType.UAV);
            g_pBuffer2.DebugName = "g_pBuffer2";
            g_pBuffer3 = ComputeShader.CreateBuffer(MaxNumElements, SizeOfPoint, AccessViewType.UAV);
            g_pBuffer3.DebugName = "g_pBuffer3";

            g_pBuffer_HRegions = ComputeShader.CreateBuffer(20000, RegionInfo.GetStructSize(), AccessViewType.UAV);
            g_pBuffer_HRegions.DebugName = "g_pBuffer_HRegions";
            g_pBuffer_VRegions = ComputeShader.CreateBuffer(20000, RegionInfo.GetStructSize(), AccessViewType.UAV);
            g_pBuffer_VRegions.DebugName = "g_pBuffer_VRegions";

            // create the UAVs
            uavBuffer1 = FXResourceVariable.InitUAVResource(this.dev, g_pBuffer1);
            uavBuffer2 = FXResourceVariable.InitUAVResource(this.dev, g_pBuffer2);
            uavBuffer3 = FXResourceVariable.InitUAVResource(this.dev, g_pBuffer3);
            uavHRegions = FXResourceVariable.InitUAVResource(this.dev, g_pBuffer_HRegions);
            uavVRegions = FXResourceVariable.InitUAVResource(this.dev, g_pBuffer_VRegions);

            rvData = new FxResourceVariableList();
            rvInput = new FxResourceVariableList();
            rvRegionsInput = new FxResourceVariableList();
            rvRegionsOutput = new FxResourceVariableList();

            // link the buffers with shaders
            rvData.AddResourceFromShader(CSBitonicSort.m_effect,"Data");

            rvData.AddResourceFromShader(CSMatrixTranspose.m_effect, "Data");
            rvData.AddResourceFromShader(CSCopyRegion.m_effect, "Data");
            rvData.AddResourceFromShader(CSCopySubBuffer.m_effect, "Data");

            rvInput.AddResourceFromShader(CSMatrixTranspose.m_effect, "Input");
            rvInput.AddResourceFromShader(CSFindSplitIndexH.m_effect, "Input");
            rvInput.AddResourceFromShader(CSFindSplitIndexV.m_effect, "Input");
            rvInput.AddResourceFromShader(CSCopyRegion.m_effect, "Input");
            rvInput.AddResourceFromShader(CSCopySubBuffer.m_effect, "Input");

            //rvRegionsInput.AddResourceFromShader(CSFindSplitIndexH.m_effect, "RegionInfoInput");
            rvRegionsInput.AddResourceFromShader(CSFindSplitIndexV.m_effect, "RegionInfoInput");
            rvRegionsInput.AddResourceFromShader(CSCopyRegion.m_effect, "RegionInfoInput");
            rvRegionsInput.AddResourceFromShader(CSFillRegionInfo.m_effect, "RegionInfoInput");

            rvRegionsOutput.AddResourceFromShader(CSFindSplitIndexH.m_effect, "RegionInfoOutput");
            rvRegionsOutput.AddResourceFromShader(CSFindSplitIndexV.m_effect, "RegionInfoOutput");
            //rvRegionsOutput.AddResourceFromShader(CSCopyRegion.m_effect, "RegionInfoOutput");
            rvRegionsOutput.AddResourceFromShader(CSFillRegionInfo.m_effect, "RegionInfoOutput");

            // Bind the CB
            CBBitonic = CSBitonicSort.m_effect.GetConstantBufferByName<cbBitonic>("CB");
            CBTranspose = CSMatrixTranspose.m_effect.GetConstantBufferByName<cbBitonic>("CB");

            CBFindSplitIndexH = CSFindSplitIndexH.m_effect.GetConstantBufferByName<CB_Split>("CB_Split");
            CBFindSplitIndexV = CSFindSplitIndexV.m_effect.GetConstantBufferByName<CB_Split>("CB_Split");
            CBFillRegionInfo = CSFillRegionInfo.m_effect.GetConstantBufferByName<CB_Split>("CB_Split");
            CBCopyRegion =CSCopyRegion.m_effect.GetConstantBufferByName<CB_Split>("CB_Split");
            CBCopySubBuffer = CSCopySubBuffer.m_effect.GetConstantBufferByName<CB_Split>("CB_Split");

            // create a staging buffer
            stagingResult = ComputeShader.CreateStagingBuffer(g_pBuffer1);

            // set the output
            Points = g_pBuffer3;
            Regions = g_pBuffer_HRegions; // this is complex :P
        }
Пример #9
0
        private void InitVariables()
        {
            m_ViewConstantBuffer = m_effect.GetConstantBufferByName( "cbViewMatrix" );

            /// Obtain the variables from effect
            m_WorldInverseTranspose = m_ViewConstantBuffer.GetMemberByName<Matrix>( "g_mWorldInverseTrans" );
            m_ViewInverse = m_ViewConstantBuffer.GetMemberByName<Matrix>( "g_mViewInverse" );

            /// Matrix transformations
            m_WorldMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>( "g_mWorld" );
            m_ViewMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>( "g_mView" );
            m_WorldViewMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>( "g_mWorldView" );
            m_WorldViewProjectionMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>("g_mWorldViewProjection");
            m_ProjectionMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>("g_mProjection");
            m_ViewProjectionMatrixVariable = m_ViewConstantBuffer.GetMemberByName<Matrix>("g_mViewProjection");

            /// Camera Position
            m_CameraPosition = m_ViewConstantBuffer.GetMemberByName<Vector3>("g_vCameraPosition");

            /// Shader Variables
            m_MaterialBuffer = m_effect.GetConstantBufferByName( "cbMaterial" );
            m_Diffuse = m_MaterialBuffer.GetMemberByName<Vector3>( "g_vMaterialDiffuse" );
            m_Ambient = m_MaterialBuffer.GetMemberByName<Vector3>( "g_vMaterialAmbient" );
            m_Opacity = m_MaterialBuffer.GetMemberByName<float>( "g_fMaterialAlpha" );
            m_Specular = m_MaterialBuffer.GetMemberByName<Vector3>( "g_vMaterialSpecular" );
            m_SpecularPower = m_MaterialBuffer.GetMemberByName<float>( "g_nMaterialShininess" );
        }
Пример #10
0
 public virtual void Init( FXEffect m_effect, FXConstantBuffer m_cb )
 {
 }