protected virtual void BindData(int shapeSlot, IPropertyWrapper properties, Texture applyData, bool blendOut, ref LodTransform.RenderData renderData) { if (applyData) { properties.SetTexture(_paramsLodDataSampler[shapeSlot], applyData); } properties.SetVector(_paramsPosScale[shapeSlot], new Vector3(renderData._posSnapped.x, renderData._posSnapped.z, transform.lossyScale.x)); properties.SetFloat(_paramsLodIdx[shapeSlot], LodTransform.LodIndex); properties.SetVector(_paramsOceanParams[shapeSlot], new Vector4(renderData._texelWidth, renderData._textureRes, 1f, 1f / renderData._textureRes)); }
protected virtual void BindData(int lodIdx, int shapeSlot, IPropertyWrapper properties, Texture applyData, bool blendOut, ref LodTransform.RenderData renderData) { if (applyData) { properties.SetTexture(GetParamIdSampler(shapeSlot), applyData); } var lt = OceanRenderer.Instance._lods[lodIdx]; properties.SetVector(LodTransform.ParamIdPosScale(shapeSlot), new Vector3(renderData._posSnapped.x, renderData._posSnapped.z, lt.transform.lossyScale.x)); properties.SetVector(LodTransform.ParamIdOcean(shapeSlot), new Vector4(renderData._texelWidth, renderData._textureRes, 1f, 1f / renderData._textureRes)); }
protected override void SetAdditionalSimParams(IPropertyWrapper simMaterial) { base.SetAdditionalSimParams(simMaterial); simMaterial.SetFloat(sp_Damping, Settings._damping); simMaterial.SetFloat(sp_Gravity, OceanRenderer.Instance.Gravity * Settings._gravityMultiplier); float laplacianKernelAngle = _rotateLaplacian ? Mathf.PI * 2f * Random.value : 0f; simMaterial.SetVector(sp_LaplacianAxisX, new Vector2(Mathf.Cos(laplacianKernelAngle), Mathf.Sin(laplacianKernelAngle))); // assign sea floor depth - to slot 1 current frame data. minor bug here - this depth will actually be from the previous frame, // because the depth is scheduled to render just before the animated waves, and this sim happens before animated waves. if (OceanRenderer.Instance._lodDataSeaDepths != null) { OceanRenderer.Instance._lodDataSeaDepths.BindResultData(simMaterial); } else { LodDataMgrSeaFloorDepth.BindNull(simMaterial); } if (OceanRenderer.Instance._lodDataFlow != null) { OceanRenderer.Instance._lodDataFlow.BindResultData(simMaterial); } else { LodDataMgrFlow.BindNull(simMaterial); } }
protected override void BindData(int shapeSlot, IPropertyWrapper properties, Texture applyData, bool blendOut, ref LodTransform.RenderData renderData) { base.BindData(shapeSlot, properties, applyData, blendOut, ref renderData); // need to blend out shape if this is the largest lod, and the ocean might get scaled down later (so the largest lod will disappear) bool needToBlendOutShape = LodTransform.LodIndex == LodTransform.LodCount - 1 && OceanRenderer.Instance.ScaleCouldDecrease && blendOut; float shapeWeight = needToBlendOutShape ? OceanRenderer.Instance.ViewerAltitudeLevelAlpha : 1f; properties.SetVector(_paramsOceanParams[shapeSlot], new Vector4(LodTransform._renderData._texelWidth, LodTransform._renderData._textureRes, shapeWeight, 1f / LodTransform._renderData._textureRes)); }
public void ApplyMaterialParams(int shapeSlot, IPropertyWrapper properties, bool applyWaveHeights, bool blendOut) { if (applyWaveHeights) { properties.SetTexture("_WD_Sampler_" + shapeSlot.ToString(), cam.targetTexture); } if (_rtOceanDepth != null) { properties.SetTexture("_WD_OceanDepth_Sampler_" + shapeSlot.ToString(), _rtOceanDepth); } // need to blend out shape if this is the largest lod, and the ocean might get scaled down later (so the largest lod will disappear) bool needToBlendOutShape = _lodIndex == _lodCount - 1 && OceanRenderer.Instance.ScaleCouldDecrease && blendOut; float shapeWeight = needToBlendOutShape ? OceanRenderer.Instance.ViewerAltitudeLevelAlpha : 1f; properties.SetVector("_WD_Params_" + shapeSlot.ToString(), new Vector3(_renderData._texelWidth, _renderData._textureRes, shapeWeight)); properties.SetVector("_WD_Pos_" + shapeSlot.ToString(), new Vector2(_renderData._posSnapped.x, _renderData._posSnapped.z)); properties.SetFloat("_WD_LodIdx_" + shapeSlot.ToString(), _lodIndex); }
public void ApplyMaterialParams(int shapeSlot, IPropertyWrapper properties, bool applyWaveHeights, bool blendOut) { if (applyWaveHeights) { properties.SetTexture(_paramsDisplacementsSampler[shapeSlot], cam.targetTexture); } if (_rtOceanDepth != null) { properties.SetTexture(_paramsOceanDepthSampler[shapeSlot], _rtOceanDepth); } // need to blend out shape if this is the largest lod, and the ocean might get scaled down later (so the largest lod will disappear) bool needToBlendOutShape = _lodIndex == _lodCount - 1 && OceanRenderer.Instance.ScaleCouldDecrease && blendOut; float shapeWeight = needToBlendOutShape ? OceanRenderer.Instance.ViewerAltitudeLevelAlpha : 1f; properties.SetVector(_paramsOceanParams[shapeSlot], new Vector4(_renderData._texelWidth, _renderData._textureRes, shapeWeight, 1f / _renderData._textureRes)); properties.SetVector(_paramsPosScale[shapeSlot], new Vector3(_renderData._posSnapped.x, _renderData._posSnapped.z, transform.lossyScale.x)); properties.SetFloat(_paramsLodIdx[shapeSlot], _lodIndex); }