Exemple #1
0
        public void updateCameraUniformBuffer()
        {
            if (myIsDebugging == true)
            {
                myDebugCamera.updateCameraUniformBuffer();
            }

            if (myIsDirty == true)
            {
                myCameraUniformData.ViewMatrix       = viewMatrix();
                myCameraUniformData.ProjectionMatrix = projMatrix();
                myCameraUniformData.ViewProjMatrix   = viewProjection();
                myCameraUniformData.OrthoMatrix      = orthoMatrix();
                myCameraUniformData.viewVector       = new Vector4(viewVector);
                myCameraUniformData.CameraPosition   = new Vector4(position);
                myCameraUniformData.top    = myZfar * (float)Math.Tan(MathHelper.DegreesToRadians(myFovx) / 2.0f);
                myCameraUniformData.bottom = -myCameraUniformData.top;
                myCameraUniformData.left   = myCameraUniformData.bottom * myAspectRatio;
                myCameraUniformData.right  = myCameraUniformData.top * myAspectRatio;
                myCameraUniformData.zNear  = myZnear;
                myCameraUniformData.zFar   = myZfar;
                myCameraUniformData.aspect = myAspectRatio;
                myCameraUniformData.fov    = myFovx;
                myCameraUniformData.frame  = 0;                // Renderer.context.frame;
                myCameraUniformData.dt     = 0.0f;             // Renderer.context.dt;

                myCameraUniformBuffer.setData(myCameraUniformData);
                myIsDirty = false;
            }
        }
Exemple #2
0
        public void upload()
        {
            myMaterialUniformData.ambientReflectivity  = ambient;
            myMaterialUniformData.diffuseReflectivity  = diffuse;
            myMaterialUniformData.specularReflectivity = spec;
            myMaterialUniformData.emmission            = emission;
            myMaterialUniformData.shininess            = shininess;
            myMaterialUniformData.alpha     = alpha;
            myMaterialUniformData.alphaTest = alphaTest;

            if (Renderer.device.bindlessTextures)
            {
                if (myTextures[(int)TextureId.Diffuse] != null)
                {
                    myMaterialUniformData.diffuseMapId = myTextures[(int)TextureId.Diffuse].value().handle;
                }

                if (myTextures[(int)TextureId.Specular] != null)
                {
                    myMaterialUniformData.hasSpecularMap = 1;
                    myMaterialUniformData.specularMapId  = myTextures[(int)TextureId.Specular].value().handle;
                }

                if (myTextures[(int)TextureId.Normal] != null)
                {
                    myMaterialUniformData.hasNormalMap = 1;
                    myMaterialUniformData.normalMapId  = myTextures[(int)TextureId.Normal].value().handle;
                    Texture tex = myTextures[(int)TextureId.Normal].value();
                    if (tex.hasAlpha)
                    {
                        myMaterialUniformData.hasParallaxMap = 1;
                        myMaterialUniformData.hasParallaxMap = 1;
                        myMaterialUniformData.parallaxScale  = 0.04f;
                    }
                    else
                    {
                        myMaterialUniformData.hasParallaxMap = 0;
                    }
                }
            }


            myMaterialUniformBuffer.setData(myMaterialUniformData);
        }
        //public override void preparePerViewFinalize(View v) { }

        //public override void preparePerPassBegin(Pass p) { }
        //public override void preparePerPass(Renderable r, Pass p) { }
        //public override void preparePerPassFinalize(Pass p) { }

        public override void prepareFrameFinalize()
        {
            myLightUniforBuffer.setData(myLightData, 0, 255 * Marshal.SizeOf(typeof(LightUniformData)));
            myCurrentLightIndex = 0;
        }