Commit d0677f3d authored by 邱旭's avatar 邱旭

加点东西

parent a5e06412
......@@ -55,6 +55,8 @@ export class D3Renderer extends ObjectRenderer {
maxVertexUniforms: number
floatVertexTextures: boolean;
private curLightkey: string;
constructor(renderer: WebglRenderer) {
super(renderer);
}
......@@ -80,6 +82,7 @@ export class D3Renderer extends ObjectRenderer {
//设置剔除,下面根据材质自行设置
//this.setCullFace(1);
}
stop() {
this.flush();
//原先的视窗需要重新//讲道理应该渲染器自己搞,算了
......@@ -90,27 +93,31 @@ export class D3Renderer extends ObjectRenderer {
}
private meshes: Mesh3D[] = [];
//继续需要的数据
render(obj: Mesh3D) {
if (!obj.geometry || !obj.material) return;
// var mat = obj.material;
// //提取渲染对象及材质,分组渲染,怎么考虑同一个geometry只需要处理一次attr,
// //分组按
// // if (!this.meshes.length) {
// // this.meshes.push(obj);
// // } else {
// for (var i = 0; i < this.meshes.length; i++) {
// if (this.meshes[i].material == mat) {//没啥软用
// this.meshes.splice(i, 0, obj)
// return
// }
const mat = obj.material;
const meshes = this.meshes;
//提取渲染对象及材质,分组渲染,怎么考虑同一个geometry只需要处理一次attr,
//分组按
// if (!this.meshes.length) {
// this.meshes.push(obj);
// } else {
const len = meshes.length;
for (let i = 0; i < len; i++) {
if (meshes[i].material == mat) {//没啥软用
meshes.splice(i, 0, obj)
return;
}
}
// }
// // }
this.meshes.push(obj);
meshes.push(obj);
}
flush() {
//生成一张阴影的深度贴图
var shadow = getShadowMap(this.lightsConfig, this.meshes, this.renderer);
const shadow = getShadowMap(this.lightsConfig, this.meshes, this.renderer);
if (shadow) {
//绑定过帧缓存,viewport肯定被改了,该回去
this.renderer.gl.viewport(
......@@ -124,12 +131,12 @@ export class D3Renderer extends ObjectRenderer {
}
//同一材质的模型一起处理,同一个着色器,webglRenderer里会判断,不会重复绑定
var curShader: GLShader = null;
var pointLightNum = this.lightsConfig.pointLights.length;
var dirLightNum = this.lightsConfig.directionalLights.length;
var gl: WebGLRenderingContext = this.renderer.gl;
var textureManager = this.renderer.textureManager;
for (var i = 0; i < this.meshes.length; i++) {
let curShader: GLShader = null;
const pointLightNum = this.lightsConfig.pointLights.length;
const dirLightNum = this.lightsConfig.directionalLights.length;
const gl: WebGLRenderingContext = this.renderer.gl;
const textureManager = this.renderer.textureManager;
for (let i = 0; i < this.meshes.length; i++) {
let mesh = this.meshes[i];//怎么判断是否要重新绑定
let mat: BaseMaterial = mesh.material;
let geo = mesh.geometry;
......
import { HashObject } from "../../2d/HashObject";
import { Texture } from "../../2d/texture";
import { Vector3 } from "../math/Vector3";
import { hex2rgb } from "../../2d/utils";
......@@ -100,7 +99,7 @@ export class BaseMaterial extends HashObject {
//所有属性
if (parameters) {
for (var key in parameters) {
for (const key in parameters) {
this[key] = parameters[key];
}
}
......@@ -138,4 +137,4 @@ export interface BaseMaterialParamsInt {
morphTargets?: boolean,
morphNormals?: boolean,
skinning?: boolean,
}
\ No newline at end of file
}
......@@ -24,7 +24,7 @@ export function getCusShader(
shadow?: any
) {
//所有参数
var parameters: IShaderParameters = {
const parameters: IShaderParameters = {
glUid: render.CONTEXT_UID,
precision: getMaxPrecision(render),//也可能是材质上传的,再说了TODO
pointLightsNum: lights.pointLights.length,
......@@ -39,8 +39,8 @@ export function getCusShader(
lightAffect: material._lightAffect,
useMap: !!material.map && material.map.valid,
// @ts-ignore
useNormalMap: !!material.normalMap && material.normalMap.valid,
// @ts-ignore
useNormalMap: !!material.normalMap && material.normalMap.valid,
useEnvMap: !!material.envMap && material.envMap.valid,
combine: material.combine,
......@@ -50,12 +50,12 @@ export function getCusShader(
useShadow: shadow && mesh.receiveShadow && material._lightAffect,
shadowType: shadow && shadow.shadowType,
}
};
//计算code,
var shaderKey = getShaderKey(parameters);
var cusShader: CusShader;
const shaderKey = getShaderKey(parameters);
let cusShader: CusShader;
for (var i = 0; i < cacheShaders.length; i++) {
for (let i = 0; i < cacheShaders.length; i++) {
if (cacheShaders[i]._glShaderKey === shaderKey) {
cusShader = cacheShaders[i];
++cusShader.usedTimes;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment