public static Texture2D GenerateBillboardNormalTexture(GameObject prefab, BillboardQuality billboardQuality, LODLevel billboardSourceLODLevel, Quaternion rotationOffset, string overrideBillboardAtlasNormalShader, bool recalculateNormals, float normalBlendFactor, bool flipBackNormals) { Shader normalShader = BillboardShaderDetector.GetNormalBillboardAtlasShader(prefab); if (overrideBillboardAtlasNormalShader != "") { normalShader = Shader.Find(overrideBillboardAtlasNormalShader); } if (flipBackNormals) { Shader.SetGlobalInt("_FlipBackNormals", 1); } else { Shader.SetGlobalInt("_FlipBackNormals", 0); } Material minPostfilter = (Material)Resources.Load("MinPostFilter/MinPostFilter", typeof(Material)); Texture2D texture = GenerateBillboardNew(prefab, GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityColumnCount(billboardQuality), GetBillboardQualityRowCount(billboardQuality), normalShader, new Color(0.5f, 0.5f, 1, 0), minPostfilter, billboardSourceLODLevel, rotationOffset, false, recalculateNormals, normalBlendFactor); Shader.SetGlobalInt("_FlipBackNormals", 0); return(texture); }
public static int GetBillboardQualityTileWidth(BillboardQuality billboardQuality) { switch (billboardQuality) { case BillboardQuality.Normal: case BillboardQuality.Normal3D: case BillboardQuality.NormalSingle: case BillboardQuality.NormalQuad: return(128); case BillboardQuality.High: case BillboardQuality.High3D: case BillboardQuality.HighSingle: case BillboardQuality.HighQuad: return(256); case BillboardQuality.Max: case BillboardQuality.Max3D: case BillboardQuality.MaxSingle: case BillboardQuality.MaxQuad: return(512); case BillboardQuality.HighSample3D: case BillboardQuality.HighSample2D: return(256); default: return(128); } }
public static Texture2D GenerateBillboardTexture(GameObject prefab, BillboardQuality billboardQuality, LODLevel billboardSourceLODLevel, VegetationShaderType vegetationShaderType, Quaternion rotationOffset, Color backgroundColor, string overrideBillboardAtlasShader, bool recalculateNormals, float normalBlendFactor) { Shader diffuseShader = BillboardShaderDetector.GetDiffuceBillboardAtlasShader(prefab); if (overrideBillboardAtlasShader != "") { diffuseShader = Shader.Find(overrideBillboardAtlasShader); } //if (vegetationShaderType == VegetationShaderType.Speedtree) //{ // diffuseShader = Shader.Find("AwesomeTechnologies/Billboards/RenderDiffuseAtlas"); //} //else //{ // diffuseShader = Shader.Find("AwesomeTechnologies/Billboards/RenderDiffuseAtlasBright"); //} Material minPostfilter = (Material)Resources.Load("MinPostFilter/MinPostFilter", typeof(Material)); Texture2D texture = GenerateBillboardNew(prefab, GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityColumnCount(billboardQuality), GetBillboardQualityRowCount(billboardQuality), diffuseShader, backgroundColor, minPostfilter, billboardSourceLODLevel, rotationOffset, false, recalculateNormals, normalBlendFactor); return(texture); }
public static int GetBillboardQualityRowCount(BillboardQuality billboardQuality) { switch (billboardQuality) { case BillboardQuality.Normal: case BillboardQuality.High: case BillboardQuality.Max: case BillboardQuality.HighSample2D: case BillboardQuality.NormalSingle: case BillboardQuality.HighSingle: case BillboardQuality.MaxSingle: return(1); case BillboardQuality.NormalQuad: case BillboardQuality.HighQuad: case BillboardQuality.MaxQuad: return(1); case BillboardQuality.Normal3D: case BillboardQuality.High3D: case BillboardQuality.Max3D: return(8); case BillboardQuality.HighSample3D: return(16); } return(1); }
public static Texture2D GenerateBillboardTexture(GameObject prefab, BillboardQuality billboardQuality, int billboardLodIndex, VegetationShaderType vegetationShaderType, Quaternion rotationOffset, Color backgroundColor) { Shader diffuseShader = BillboardShaderDetector.GetDiffuceBillboardAtlasShader(prefab); //if (vegetationShaderType == VegetationShaderType.Speedtree) //{ // diffuseShader = Shader.Find("AwesomeTechnologies/Billboards/RenderDiffuseAtlas"); //} //else //{ // diffuseShader = Shader.Find("AwesomeTechnologies/Billboards/RenderDiffuseAtlasBright"); //} Material minPostfilter = (Material)Resources.Load("MinPostFilter/MinPostFilter", typeof(Material)); Texture2D texture = GenerateBillboardNew(prefab, GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityColumnCount(billboardQuality), GetBillboardQualityRowCount(billboardQuality), diffuseShader, backgroundColor, minPostfilter, billboardLodIndex, rotationOffset); return(texture); }
public static Texture2D GenerateBillboardAOTexture(GameObject prefab, BillboardQuality billboardQuality, LODLevel billboardSourceLODLevel, Quaternion rotationOffset, bool recalculateNormals, float normalBlendFactor) { Shader normalShader = Shader.Find("AwesomeTechnologies/Billboards/AOBackground"); Material minPostfilter = (Material)Resources.Load("MinPostFilter/MinPostFilter", typeof(Material)); Texture2D texture = GenerateBillboardNew(prefab, GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityColumnCount(billboardQuality), GetBillboardQualityRowCount(billboardQuality), normalShader, new Color(0.5f, 0.5f, 1, 0), minPostfilter, billboardSourceLODLevel, rotationOffset, true, recalculateNormals, normalBlendFactor); return(texture); }
public static Texture2D GenerateBillboardNormalTexture(GameObject prefab, BillboardQuality billboardQuality, int billboardLodIndex, Quaternion rotationOffset) { Shader normalShader = BillboardShaderDetector.GetNormalBillboardAtlasShader(prefab); Material minPostfilter = (Material)Resources.Load("MinPostFilter/MinPostFilter", typeof(Material)); Texture2D texture = GenerateBillboardNew(prefab, GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityTileWidth(billboardQuality), GetBillboardQualityColumnCount(billboardQuality), GetBillboardQualityRowCount(billboardQuality), normalShader, new Color(0.5f, 0.5f, 1, 0), minPostfilter, billboardLodIndex, rotationOffset); return(texture); }
public static void FixBillboardArtifact(Texture2D texture, BillboardQuality billboardQuality) { int rowCount = BillboardAtlasRenderer.GetBillboardQualityRowCount(billboardQuality); int tileWidth = BillboardAtlasRenderer.GetBillboardQualityTileWidth(billboardQuality); int lineCount = tileWidth / 64; int textureWidth = texture.width; for (int i = 0; i <= rowCount - 1; i++) { for (int j = 0; j <= lineCount - 1; j++) { for (int x = 0; x <= textureWidth - 1; x++) { Color pixelColor = texture.GetPixel(x, i * tileWidth + j); pixelColor.a = 0; texture.SetPixel(x, i * tileWidth + j, pixelColor); } } } texture.Apply(); }