새로운 기능 Katana 3.0
3 딜라이트 렌더러
Katana 이제 번들 3 기쁨: 높은 렌더링 요구 사항을 견딜 수 있도록 설계된 단방향 경로 추적 프로그램입니다. 3Delight 플러그인의 워크 플로우 옵션은 다음과 같습니다.
- 완전 대화식 라이브 렌더링 (조명, 오브젝트, 재질 및 카메라 추가, 빼기, 수정)
- 간소화 된 렌더 패스 관리 및 샘플링 제어
- Multilight 도구 및 GafferThree 노드를 통한 대화식 라이트 믹싱
- 깊은 출력으로 모든 조명 유형에 빠른 대기 렌더링
- 모든 조명 유형에 걸친 통합 조명 샘플링
- Cryptomatte 워크 플로우 지원
- 완전 OSL 쉐이딩 엔진
그만큼 Katana 설치 프로그램은 3Delight를 옵션 구성 요소로 제공합니다. Katana 설치. 3Delight는 미리보기 및 라이브 렌더링에서 무료로 사용할 수 있습니다. 디스크 및 배치 렌더링에는 3delight_r 워터 마크 제거 라이센스; 연락주세요 sales@foundry.com 자세한 내용은. Katana의 예제 프로젝트는 이제 필요한 경우 렌더러에서 3Delight를 사용합니다.
노트 : Katana renderer-agnostic Renderer Plug-in API를 통해 다른 렌더러를 계속 지원합니다.
히드라 구동 뷰어
Katana 3.0은 기존의 것보다 실질적으로 더 인터랙티브하고 확장 가능한 새로운 3D 장면 뷰어 탭을 포함합니다 뷰어 탭.
새로운 뷰어는 히드라, Pixar Animation Studios에서 오픈 소스의 핵심 구성 요소로 개발 된 확장 가능한 최신 OpenGL 렌더링 아키텍처 범용 장면 설명 (USD) 계획.
그만큼 뷰어 (Hydra) 탭은 다음을 사용하여 구현됩니다. Katana에서 수정 및 확장 된 님의 뷰어 API Katana 2.6.
성능 개선
에 대한 성능 개선 Katana 3.0은 다음을 포함합니다 :
-
개선 Katana의 장면 처리 라이브러리 Geolib3.
-
'no-op'장면 그래프 위치에 대한 메모리 및 계산 오버 헤드가 크게 줄었습니다.
-
장면 의존성의 중단없는 요리를 실험적으로 지원합니다. 일반적으로 Geolib3는 요리되지 않은 위치에서 또는 Geolib3의 캐시에없는 위치에서 위치 데이터가 요청 된 경우 요리 작업을 중단하고 다시 예약합니다. 이 기능을 사용하면 Geolib3에서 누락 된 위치 데이터가 발견되면 해당 데이터를 재귀 적으로 조리 한 다음 위치 데이터가 요청 된 시점에서 원래 Op로 돌아갑니다. 이 기능은 환경 변수를 설정하여 활성화 할 수 있습니다. KATANA_ENABLE_RECURSIVE_COOKS = 1.
-
최적화 FnAttribute:
-
일반적으로 생성 된 속성 (예 : 정수 [0, 256], 0.0f 및 1.0f 수레, 0.0 및 1.0의 두 배, 빈 문자열 및 빈 그룹)은 한 번만 생성 된 다음 재사용됩니다. 이것은 메모리 할당의 오버 헤드를 피하고 FnAttribute 객체의 참조 카운트를 조작합니다.
-
FnAttribute 클래스는 이제 이동을 인식하여 이동 생성자와 이동 할당 연산자를 정의합니다. 지원되는 컴파일러를 사용하면 FnAttribute 개체의 참조 수를 조작하는 오버 헤드를 줄일 수 있습니다.
- DataAttribute 클래스는 이제 별도의 복사본을 만들지 않고 구성된 데이터 버퍼의 소유권을 가질 수 있습니다. 따라서 데이터를 FnAttribute의 내부 버퍼에 복사 할 필요가 없으므로 최대 메모리 사용을 줄이고 전체 렌더링 시간을 줄일 수 있습니다.
-
-
AlembicIn, AttributeSet, ConstraintResolve, LookFileResolve 및 OpScript를 포함하여 여러 성능에 중요한 Geolib3 Ops의 최적화.
-
API 경계에서 문자열의 임시 복사본을 만들지 않도록 최적화예를 들어 GeolibCook 인터페이스 이제 문자열 매개 변수를 StringView 대신에 const std :: string &.
-
-
성능 향상 렌더 로그 대량의 로그 출력을 처리 할 때 감시 장치 렌더러에서 이미지 업데이트를 처리 할 때 장면 그래프 많은 위치가 열려 있거나 고정 된 경우
-
노드 그래프의 네임 스페이스 처리 기능이 개선되어 노드 그래프를로드, 검색 및 조작하는 데 걸리는 시간이 단축되었습니다.
-
노드 그래프와 Geolib3 Op 트리 간의 동기화 시간이 향상되었습니다.
-
응용 프로그램 시작 시간 및 CPU 사용량이 향상되었습니다.
사용자 인터페이스 개선
Katana 3에는 응용 프로그램의 전반적인 사용자 경험을 향상시키는 여러 가지 기능 향상 및 버그 수정이 포함되어 있습니다. 주목할만한 변화는 다음과 같습니다.
-
예술가가 자신의 작업에 집중할 수 있도록보다 현대적이고 평평한 모양을 위해 수정 된 색상 팔레트.
-
더 큰 색상 견본.
-
매개 변수, 속성, 프로젝트 설정 및 환경 설정에 대한 툴팁으로 속성 유형과 같은 정보를보다 쉽게 액세스 할 수 있습니다.
-
두 가지 유형의 컨트롤을 구분하기 위해 재 설계된 확인란과 라디오 버튼.
-
개편 탭 메인 메뉴와 탭 추가 메뉴, 내장 탭 유형, 탭 유형이로드되는 유형을 명확하게 구분 Katana 사용자의 홈 디렉토리에서로드 할 수있는 자원 위치 및 사용자 정의 유형의 탭.
-
응용 프로그램 글꼴 크기 환경 설정으로 확장되는 더 많은 UI 요소.
우리는 계속해서 사용자 인터페이스의 측면을 개선 할 것입니다. Katana 고객으로부터받은 피드백을 통합하여 출시 될 예정입니다.
더 이상 사용되지 않는 기능
-
AttributeScript 노드 유형은 더 이상 사용되지 않으며 다음의 노드 작성 메뉴에서 숨겨집니다. 노드 그래프 탭. 기존의 AttributeScript 노드 Katana 프로젝트는 여전히 작동하며 AttributeScript 노드는 여전히 NodegraphAPI 스크립팅이지만 새 프로젝트의 경우 OpScript 노드와 Lua를 대신 사용하는 것이 좋습니다. 다음 릴리스에서는 AttributeScript 노드에 대한 지원이 제거됩니다.
-
GafferThree가 대체 한 클래식 Gaffer 노드 유형 Katana 2.0v1은 이제 노드의 노드 생성 메뉴에서 숨겨집니다. 노드 그래프 탭.
-
다음의 거의 사용하지 않는 2D 노드가 노드 그래프 탭 : ImageAddMix, ImageAtop, ImageAverage, ImageBlack, ImageDifference, ImageDistort, ImageDivide, ImageExclusion, ImageFrom, ImageGeometric, ImageHypot, ImageMatte, ImageMatteMix, ImageMax, ImageMin, ImageMinus, ImageMix, ImageMultiply, ImageOver, ImagePlus, ImageScreen, ImageUnder, ImageWhite. 이러한 노드 유형은 스크립팅을 통해 계속 만들 수 있습니다. 기존 프로젝트의 노드는 이전과 같이 계속 작동합니다.
-
그만큼 색상 / 사용 단일 구성 요소 RGB 상업에서 사용되지 않은 환경 설정 Katana, 사용 중지되었습니다.
타사 소프트웨어 변경
아래 표에는 함께 제공되는 타사 소프트웨어 버전의 변경 사항이 요약되어 있습니다 Katana.
버전 Katana 2.6 | 버전 Katana 3.0v9 | |
---|---|---|
3 기쁨 | 배송되지 않음 | 13.4.9 |
증류기 | 1.5.3 | 1.6.1 |
LuaJIT | 배송되지 않음 | 2.1.0 |
누피 | 1.5.1 (Linux 만 해당) | 배송되지 않음 |
파이썬 | 2.7.3 | 2.7.13 |
RLM | 9.3 | 12.2 |
TBB | 4.4.6 | 2017 업데이트 8 |
USD | 배송되지 않음 | 0.8.0 |
PyQt | 4.10.4 | 4.11.4 |
ZeroMQ | 3.2.5 | 4.2.1 |
PyZeroMQ | 13.0.2 | 16.0.2 |
VS CRT | 2010 (Windows 만 해당) | 배송되지 않음 |
컴파일러 변경
Katana 3.0은 Linux에서 GCC 4.8로, Windows에서 Visual Studio 2015로 컴파일됩니다.
Katana 2.5와 Katana 2.6은 Linux에서 GCC 4.1과 Windows에서 Visual Studio 2010으로 빌드되었습니다.
컴파일러의 변경은 대부분의 고객에게 영향을 미치지 않습니다. 호환성을 위해 Katana API를 오랫동안 C ++ 헤더 세트와 소스를 고객 플러그인 라이브러리로 직접 컴파일 한 소스와 C ++ 계층으로 래핑 된 안정적인 컴파일러 독립적 C 기반 API로 분리했습니다. 예를 들어 Geolib Ops를 작성하는 플러그인 작성자는 여전히 툴체인을 선택하여 플러그인을 자유롭게 빌드 할 수 있습니다.
이 호환성 정보는 Python 또는 Qt와 링크되는 플러그인을 빌드하는 Windows 플러그인 작성자에게는 적용되지 않습니다. 고객은 Visual Studio 2015를 사용하여 이러한 플러그인을 다시 빌드해야합니다.
노트 : Python 2.7 C 확장을 빌드하기위한 표준 Windows 컴파일러는 Visual Studio 2008이지만이 컴파일러 해서는 안된다 Python C 확장을 빌드하는 데 사용 Katana. 고객은 distutils / setuptools의 컴파일러 선택을 재정 의하여 다음과 호환되는 기본 Python 확장을 빌드해야 할 수도 있습니다. Katana. 보다 https://docs.python.org/2.7/distutils/apiref.html#module-distutils.msvccompiler 지침이 필요합니다.
API 변경
Katana 3.0의 API는 C ++ 11 표준을 지원하지 않는 구형 컴파일러로 계속 빌드됩니다. C ++ 98 컴파일러에 대한 지원은 향후 릴리스에서 제거 될 예정입니다. Katana.
Katana 에 대해 빌드 된 C ++ 플러그인 Katana 2.5 이상 이진 호환 와 Katana 3.0 (Python 또는 Qt에 연결되는 Windows 플러그인 및 개발중인 뷰어 API를 사용하는 플러그인 제외).
Katana 에 대해 빌드 된 C ++ 플러그인 Katana 2.5 이상 소스 호환 이랑 Katana 아래에 설명 된 몇 가지 예외를 제외하고 3.0 API.
플러그인 예
Katana플러그인 예제는 C ++ 11로 점진적으로 마이그레이션되고 있으며 더 이상 C ++ 11 표준을 지원하지 않는 구형 컴파일러에서 빌드되도록 보장되지 않습니다.
뷰어 API
Viewer API는 Hydra Viewer와 병렬로 개발되었으며 Katana 2.6v4. 의 뷰어 API에 대한 정보 Katana 3.0에서 찾을 수 있습니다 Katana 개발자 안내서.
자산 플러그인
Python 기반 AssetAPI 플러그인은 더 이상 사용되지 않으며 향후 릴리스에서는 지원되지 않습니다. 성능 및 안정성을 위해 AssetAPI 플러그인은 C ++로 작성해야합니다.
쿡 인터페이스
GeolibCookInterface :: execOp () 개인 사용자 정의 데이터 전달을 지원합니다 (일명실행 된 Op. 또한 발신자의 개인 데이터가 수신자에 의해 상속되는 문제를 해결합니다. 수정 된 동작에서 발신자가 execOp () 개인 데이터를 지정하지 않으면 getPrivateData () 돌아올 것이다 없는 수신자에게. 2.5 또는 2.6 SDK에 대해 작성된 Op는 개인 데이터를 execOp (). 그러나 3.0 SDK를 사용하여 다시 빌드하고 privateData 매개 변수 execOp () 대신에. 개인 데이터를 지원하지 않는 OpScript는 변경되지 않았습니다.
FnAttribute
구현 FnAttribute 성능이 향상되었습니다.
- 정적 속성 : 특정 속성 (예 : 정수 [0, 256], 0.0f 및 1.0f 수레, 0.0 및 1.0의 두 배, 빈 문자열 및 빈 그룹)은 한 번만 생성 된 다음 재사용됩니다. 즉, 참조 횟수를 늘리거나 줄일 필요가 없습니다.
- 생성자와 연산자 이동 :이 새로운 연산자 (C ++ 11)는 FnAttribute. 새 컴파일러를 사용하면 객체를 언제 이동할 수 있는지 감지하여 참조 횟수를 늘리거나 줄일 필요가 없습니다.
노트 : Katana 3.0v9는 다른 알고리즘을 사용하여 속성 해시를 계산하므로 속성 해시는 다음과 다릅니다. Katana 2.x.
의 행동 DataAttribute'에스 getNearestSample () 메소드가 변경되었으며 경우에 따라 C ++ 플러그인을 빌드하려면 코드를 변경해야합니다. Katana 3.0 아피스.
이전 릴리스에서 Katana 호출하여 샘플 버퍼에 대한 원시 포인터를 얻을 수있었습니다. getNearestSample (time) .data (). 성능상의 이유로 Katana 3.0이 관용구는 허용되지 않으며 컴파일 타임 오류가 발생합니다. FnAttribute 이제는 ConstVector 에 의해 반환 된 객체 getNearestSample () 호출하기 전에 지역 변수에 할당 데이터() 방법. 몇 가지 예는 다음과 같습니다.
// Works with both Katana 2 and Katana 3. `p` is valid until either of `sample` // or `myIntAttr` are destructed. auto sample = myIntAttr.getNearestSample(.0f); const int* p = sample.data(); // Results in a compile-time error in Katana 3. const int* p = myIntAttr.getNearestSample(.0f).data();
다중 샘플링 된 샘플 버퍼에 대한 원시 포인터 가져 오기를 용이하게하기 위해 DataAttribute 사물, Katana 3.0은 새로운 C ++ API를 getSamples () 방법. 몇 가지 예는 다음과 같습니다.
for (const auto& sample : myIntAttr.getSamples()) { ProcessSample(sample.getSampleTime(), sample.data(), sample.size()); } // Assign the result of `getSamples` to a local variable if you want pointers to // remain valid for longer. Here, the raw pointers stored in `vec` remain valid // until either the `myIntAttr` or `samples` objects are destructed. auto samples = myIntAttr.getSamples(); vector<tuple<float /*time*/, const int* /*data*/, size_t /*size*/>> vec; for (const auto& sample : samples) { vec.emplace_back(sample.getSampleTime(), sample.data(), sample.size()); }
또한 새로운 getValuesAs () 속성의 기본 시간 샘플에서 고정 된 수의 값으로 구성된 C ++ 객체를 반환하는 함수가 추가되었습니다. 예를 들어 FloatAttribute 4x4 행렬을 나타내는 다음과 유사한 코드를 사용하여 Imath 행렬 객체로 변환 할 수 있습니다.
auto m44f = myFloatAttr.getValuesAs<Imath::M44f, 16>();
FnAttribute이제 구성된 데이터 버퍼의 소유권을 가질 수 있습니다. 이를 통해 최대 메모리 사용량을 줄이고 데이터를 복사 할 필요가 없으므로 전체 렌더링 시간을 줄일 수 있습니다. FnAttribute내부 버퍼.
대한 FnAttribute 데이터 버퍼의 소유권을 얻으려면 호출자는 deleter 함수와 널이 아닌 데이터 포인터 (컨텍스트)를 FnAttribute의 생성자. 결과는 다음과 같습니다.
- 그만큼 FnAttribute 샘플 시간의 값을 복사합니다. 즉{-0.5, 0.0, 0.5}.
- 각 시간 샘플 버퍼 (포인터가 아닌 포인터)의 포인터 값을 복사합니다.
- 파기시 속성은 사용자 제공 컨텍스트를 전달하여 사용자 제공 함수를 호출합니다. 사용 사례는 아래를 참조하십시오.
- 샘플 버퍼 및 사용자 제공 컨텍스트 (다를 수 있음)는 수명 기간 동안 유효해야합니다. FnAttribute 데이터의 소유권을 가져 왔습니다.
사용법 예 :
// ----------------------------------------------------------------------------- // Create an IntAttribute with a single time sample of 10 values. int64_t tupleSize = 1; int64_t valueCount = 10; // Create a buffer to store our data -- this must live on the heap, as the // attribute we create stores pointers into this memory block. unique_ptr<int[]> buf(new int[valueCount]); // Fill `buf` with data. // ... FnAttribute::IntAttribute myIntAttr(buf.get(), valueCount, tupleSize, buf.get(), [](void* context) { delete[] static_cast<int*>(context); }); // myIntAttr now owns the buffer. buf.release(); // ----------------------------------------------------------------------------- // Create a FloatAttribute with three time samples of 64 values. int64_t tupleSize = 4; int64_t valueCount = 64; int64_t sampleCount = 3; // Create a buffer to store our data -- this must live on the heap, as the // attribute we create stores pointers into this memory block. unique_ptr<float[]> buf(new float[valueCount * sampleCount]); // Fill `buf` with data. // ... // FnAttribute copies these buffers into internal storage; they need not live on // the heap. const float* samples[] = {&buf[valueCount * 0], &buf[valueCount * 1], &buf[valueCount * 2]}; float sampleTimes[] = {-0.5f, 0.0f, 0.5f}; FnAttribute::FloatAttribute myFloatAttr(sampleTimes, sampleCount, samples, valueCount, tupleSize, buf.get(), [](void* context) { delete[] static_cast<float*>(context); }); // myFloatAttr now owns the buffer. buf.release();
이제 만들 수 있습니다 StringAttribute사용자가 제공 한 메모리를 소유합니다. 그 결과 StringAttribute 일반 및 제로 복사 해시에 대한 해시 계산도 변경되었습니다.
다음 예제는 멀티 샘플링 생성을 보여줍니다. StringAttribute 제공된 문자열 버퍼의 소유권을 가져옵니다.
const char* kString1 = "We hope"; const char* kString2 = "you enjoy"; const char* kString3 = "Katana 3.0v1."; // Prepare the string data. char** valueArrayForSample1 = new char*[1]; char* dataForSample1 = new char[strlen(kString1) + 1]; memcpy(dataForSample1, kString1, strlen(kString1) + 1); valueArrayForSample1[0] = dataForSample1; char** valueArrayForSample2 = new char*[1]; char* dataForSample2 = new char[strlen(kString2) + 1]; memcpy(dataForSample2, kString2, strlen(kString2) + 1); valueArrayForSample2[0] = dataForSample2; char** valueArrayForSample3 = new char*[1]; char* dataForSample3 = new char[strlen(kString3) + 1]; memcpy(dataForSample3, kString3, strlen(kString3) + 1); valueArrayForSample3[0] = dataForSample3; // Prepare the value pointers and sample time array. char** valuePtrs[3] = {valueArrayForSample1, valueArrayForSample2, valueArrayForSample3}; float sampleTimes[3] = {-0.5f, 0.0f, 0.5f}; // This vector will be passed to StringAttribute's constructor so we can // clean up the data when the attribute is to be destroyed. auto* context = new std::vector<char**>{ valueArrayForSample1, valueArrayForSample2, valueArrayForSample3}; FnAttribute::StringAttribute zeroCopyStringAttribute(sampleTimes, 3, (const char***)valuePtrs, 1, 1, context, [](void* context){ auto* memoryToFree = static_cast<std::vector<char**>*>(context); for(char** dataForSample : *memoryToFree) { delete[] dataForSample[0]; delete[] dataForSample; } delete memoryToFree; }); // Access the attribute data as normal. auto firstSample = zeroCopyStringAttribute.getNearestSample(-0.5f); auto secondSample = zeroCopyStringAttribute.getNearestSample(0.0f); auto thirdSample = zeroCopyStringAttribute.getNearestSample(0.5f); std::cout << "[-0.5] = " << firstSample[0] << std::endl; std::cout << "[0.0] = " << secondSample[0] << std::endl; std::cout << "[0.5] = " << thirdSample[0] << std::endl;
사용법 Katana'에스 FnAttribute 외부 응용 프로그램의 라이브러리 ( FnAttribute :: 부트 스트랩 () function)에 katana_r 라이센스가 지속적으로 필요합니다.
OpScript
OpScript 레거시 API에 대한 지원이 제거되었습니다. 이 API는 일부 알파 릴리스에서 기본적으로 사용 가능했습니다. Katana 2.0v1이지만 이후 기본적으로 사용 중지되었습니다.
OpScript 노드는 LuaJIT 2.1.0을 Lua 인터프리터로 사용하도록 업그레이드되어 일반적인 성능 향상과 함께 향후 개선을위한 토대를 마련해야합니다. 변경 사항은 일반적으로 투명해야하지만 LuaJIT 기반 문제에 직면 한 경우 Lua 5.1 기반의 이전 OpScript 구현을 계속 사용할 수 있습니다. 이 구현은 환경 변수를 설정하여 선택할 수 있습니다 KATANA_OPSCRIPT_INTERPRETER 에 루아 _5_1.
LuaJIT는 Lua 5.1 언어 표준을보다 엄격하게 따르며 Lua 5.1에 포함 된 일부 Lua 5.0 구문은 LuaJIT에서 사용할 수 없습니다. 이것들은:
- 그만큼
math.mod()
function; usemath.fmod()
or the%
대신에 연산자. - 암시 적
arg
parameter for old-style vararg functions; use Lua 5.1 vararg expressions (...
) 대신 - 그만큼
string.gfind()
function; usestring.gmatch()
대신에
OpScript에 이전 LuaJIT 릴리스의 주소 공간 제한이 적용되지 않도록 "GC64"모드에서 LuaJIT 2.1을 빌드합니다.
자세한 내용은 다음을 참조하십시오.
렌더러 플러그인
그만큼 DiskRenderOutputProcess :: setRenderAction () 행동 양식 renderAction 매개 변수의 유형이 std :: auto_ptr <렌더 액션> 에 FnPlatform :: 내부 :: UniquePtr (일명std :: unique_ptr). 같이 std :: unique_ptr 복사 할 수 없습니다 FnPlatform :: internal :: UniquePtr :: move (일명std :: unique_ptr :: move) 내부 포인터를 한 컨테이너에서 다른 컨테이너로 이동하려면 명시 적으로 호출해야합니다.
디스플레이 드라이버
이제 전송되는 픽셀 데이터를 구성 할 수 있습니다 Katana RGBA 또는 ARGB로 디스플레이 드라이버 API를 통해. RGBA는 내부 픽셀 형식입니다. Katana 이 픽셀 형식을 사용하면 Katana 알파 채널을 다시 정렬하기 위해 채널 스위 즐을 수행 할 필요가 없습니다. 다음 예제는이 채널 픽셀 형식을 활성화하는 방법을 보여줍니다.
NewChannelMessage_v2Ptr newChannelMessage_v2( new FnKat::NewChannelMessage_v2(*newFrameMessage)); // Setup NewChannelMessage_v2 newChannelMessage_v2->setChannelID(/* Channel ID */); newChannelMessage_v2->setChannelOrigin(0, 0); newChannelMessage_v2->setChannelDimensions(1000, 1000); newChannelMessage_v2->setSampleRate(sampleRate); newChannelMessage_v2->setDataSize(4 * sizeof(float)); newChannelMessage_v2->setPixelLayout(FnKat::NewChannelMessagev2::PixelLayout::RGBA); newChannelMessage_v2->setChannelName(legacyChannelName);
성능 향상 Katana감소 된 메모리 할당 및 메시지 전송 오버 헤드를 포함한의 디스플레이 드라이버 API.
새로운 '제로 복사'옵션 DataMessage 유형이 소개되었습니다. 이를 통해 디스플레이 드라이버 작성자는 픽셀 버퍼의 소유권을 디스플레이 드라이버 API로 이전 할 수 있으므로 픽셀 복사 및 메모리 할당 오버 헤드가 크게 줄어 듭니다. 예를 들면 다음과 같습니다.
// Pixel buffer clean-up callback. void ImageDataDeleter(void* data) { char* dataArray = reinterpret_cast<char*>(data); delete[] dataArray; } // Sending pixel buffers back to Katana... FnKat::DataMessage dataMsg(/* ... */); // Configure coordinates/dimensions unchanged... // Allocate pixel buffer... char *dataArray = new char[blockSize]; // NEW: Pass pixel data clean-up callback to setData() and the Display Driver // API will take ownership of the pixel buffer. dataMsg.setData(dataArray, blockSize, ImageDataDeleter); // Send to Katana via Katana Pipe interface pipe->send(dataMsg);
FnLogging
C ++ 클래스 FnLogging :: FnLogQueue 더 이상 사용되지 않으며 향후 릴리스에서 제거 될 예정입니다. 이 클래스는 작동하지 않았으며 인스턴스화를 시도한 경우 경고를 기록했습니다.
제거 된 API
더 이상 사용되지 않는 API 헤더 및 소스 Katana 2.5가 제거되었습니다. 이 헤더는 다음과 같습니다.
-
FnGeolib: util / Mutex.h, util / Platform.h, util / PowerNap.h, util / Semaphore.h, util / ThreadException.h, util / Timer.h
-
FnRender: plugin / SocketConnection.h, 플러그인 /CommandLineTools.h
일반적인 플러그인 호환성
USD
에 대해 컴파일 된 USD 바이너리 Katana 2.6과 호환 Katana 3.0.
USD 소스 코드는 Katana USD 버전 0.8.2 기준 3.0
USD / 지원Katana Windows의 플러그인은 계속 사용할 수 없습니다.
렌더맨
렌더맨 Katana 바이너리 컴파일 Katana 2.6과 호환 Katana 3.0.
아놀드
아놀드 Katana 바이너리 컴파일 Katana 2.6과 호환 Katana 3.0.
도움이되지 않은 죄송합니다
왜 도움이되지 않습니까? (해당되는 모든 것을 체크하세요)
의견을 보내 주셔서 감사합니다.
찾고있는 것을 찾을 수 없거나 워크 플로에 대한 질문이있는 경우 시도해보십시오 파운드리 지원.
학습 내용을 개선 할 수있는 방법에 대한 의견이 있으시면 아래 버튼을 사용하여 설명서 팀에 이메일을 보내십시오.
Email Docs Team의견을 보내 주셔서 감사합니다.